Make access-scope work with ajax frameworks that "render" during beforePhase of 
a PhaseListener
-----------------------------------------------------------------------------------------------

                 Key: ORCHESTRA-29
                 URL: https://issues.apache.org/jira/browse/ORCHESTRA-29
             Project: MyFaces Orchestra
          Issue Type: Improvement
          Components: Conversation
            Reporter: Simon Kitching


As reported by Petr Juza, there is a problem with the NetAdvantage ajax library 
and orchestra access-scoped conversations.

Orchestra's AccessScopePhaseListener runs for the RENDER_RESPONSE phase. In 
beforePhase it clears the "accessed" flag of all conversations, and then in 
afterPhase it discards conversations that are not accessed. In other words, it 
expects rendering to occur between its beforePhase and afterPhase are run.

However in the NetAdvantage ajax framework (and possibly others) it appears 
that the ajax equivalent of "rendering" is done by a PhaseListener's 
beforePhase code, and that the PhaseListener then calls 
facesContext.responseComplete to block normal rendering. In other words, these 
ajax frameworks effectively move "rendering" (including access to all the 
beans) earlier in time than normal JSF processing.

In this situation, *if* the Orchestra PhaseListener is registered first, then 
all works fine. But if it gets registered after the ajax phase listener, then 
the accesses to conversation-scoped beans all occur before its beforePhase 
(where the access flags are cleared). So at afterPhase no conversations appear 
to be accessed.

I don't think this qualifies as an Orchestra *bug*; moving rendering out of its 
normal time is the problem.

However the obvious solution is for Orchestra to somehow clear access flags at 
the very start of the render phase, before any PhaseListener objects are run.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to