[ 
https://issues.apache.org/jira/browse/MYFACES-4553?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17681420#comment-17681420
 ] 

Volodymyr Siedlecki edited comment on MYFACES-4553 at 1/27/23 6:41 PM:
-----------------------------------------------------------------------

Add to the note above (basically stating that there are implementation behavior 
/ implementation differences beween Mojarra / MyFaces, I see another difference 
with a unit test case ( 
{{org.apache.myfaces.application.flow.FlowMyFacesCDIRequestTestCase.[testFlow1_1|https://github.com/apache/myfaces/blob/93a47f3c78716f0ff3c01227ee1cd5972aeb965b/impl/src/test/java/org/apache/myfaces/application/flow/FlowMyFacesCDIRequestTestCase.java#L59-L72]
 }}) if it's run against Mojarra:  *from-outcome* differs

4.0.0 - RC3MyFaces:

<navigation-case>
  <from-view-id>/flow1_1.xhtml</from-view-id>
  <from-outcome>{*}begin{*}</from-outcome>
  
<to-view-id>/flow1/begin.xhtml</to-view-id>/Users/volosied/opensource/sample-apps/flows-failure/target/flows.war
</navigation-case>

null
_____

Mojarra 4.0.0 
NavigationCase{fromViewId='null', fromAction='null', fromOutcome='{*}flow1{*}', 
if='null', toViewId='/flow1/begin.xhtml', faces-redirect=false, 
includeViewParams=false', parameters={}}

null

flows.war is attached to test

The test calls ".getNavigationCase(facesContext, null, "flow1");" and I think 
Mojarra is correct here since flow1 is the previous outcome.


was (Author: volosied):
Add to the note above, I see another difference with a unit test case ( 
{{org.apache.myfaces.application.flow.FlowMyFacesCDIRequestTestCase.[testFlow1_1|https://github.com/apache/myfaces/blob/93a47f3c78716f0ff3c01227ee1cd5972aeb965b/impl/src/test/java/org/apache/myfaces/application/flow/FlowMyFacesCDIRequestTestCase.java#L59-L72]
 }}) if it's run against Mojarra:  *from-outcome* differs

4.0.0 - RC3MyFaces:

<navigation-case>
  <from-view-id>/flow1_1.xhtml</from-view-id>
  <from-outcome>{*}begin{*}</from-outcome>
  
<to-view-id>/flow1/begin.xhtml</to-view-id>/Users/volosied/opensource/sample-apps/flows-failure/target/flows.war
</navigation-case>

null
_____

Mojarra 4.0.0 
NavigationCase{fromViewId='null', fromAction='null', fromOutcome='{*}flow1{*}', 
if='null', toViewId='/flow1/begin.xhtml', faces-redirect=false, 
includeViewParams=false', parameters={}}

null

flows.war is attached to test

The test calls ".getNavigationCase(facesContext, null, "flow1");" and I think 
Mojarra is correct here since flow1 is the previous outcome.

> TCK spec/flows/intermediate failure: WELD-001303: No active contexts for 
> scope type jakarta.faces.flow.FlowScoped
> -----------------------------------------------------------------------------------------------------------------
>
>                 Key: MYFACES-4553
>                 URL: https://issues.apache.org/jira/browse/MYFACES-4553
>             Project: MyFaces Core
>          Issue Type: Bug
>    Affects Versions: 4.0.0-RC4
>            Reporter: Volodymyr Siedlecki
>            Priority: Major
>         Attachments: faces_flows_intermediate_web.war, flows.war
>
>
> {color:#0e101a}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.|https://github.com/apache/myfaces/blob/main/impl/src/main/java/org/apache/myfaces/flow/cdi/FlowScopeContext.java#L105]
> {color}
>  
> {color:#0e101a}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: 
> {color}
> {color:#0e101a}Application Switch Case: {color}
> [{color:#4a6ee0}[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]{color}]
>  
> {color:#0e101a}MyFace Switch Case Check: {color}
> [{color:#4a6ee0}[https://github.com/apache/myfaces/blob/8956fd167f797a4e32511e268a6520715cb132a5/impl/src/main/java/org/apache/myfaces/application/NavigationHandlerImpl.java#L645]{color}]
>  
>  
> {color:#0e101a}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|https://github.com/apache/myfaces/blob/8956fd167f797a4e32511e268a6520715cb132a5/impl/src/main/java/org/apache/myfaces/application/NavigationHandlerImpl.java#L368]
>  (which is much later). {color}
>  
> {color:#0e101a}My only idea is to force a transition call before we check the 
> nodes, which causes myfaces unit test failures. 
> {color}
> {color:#0e101a}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.{color}
>  
> {color:#0e101a}Unit Test Code:{color}
> *{color:#0e101a}spec/flows/intermediate:{color}*
> {color:#0e101a}Test: 
> {color}[{color:#4a6ee0}[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]{color}]
> {color:#0e101a}       
> {color}[{color:#4a6ee0}[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]{color}]
>  
>  



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to