4 Replies Latest reply on Jan 24, 2007 11:07 AM by andrew.rw.robinson

    End doesn't really end the conversation in 1.1

    andrew.rw.robinson

      I have an event listener with an End attribute on it inside of a conversation scoped bean:

      @Observer(UserContextUtils.APP_SET_CHANGE_EVENT_NAME)
       @End
       public void currentViewAppSetChanged(CurrentViewApplicationSetChangeEvent evt) {...}


      There is no nested conversation when this method is fired. I was assuming that the long running conversation for this been would be ended and when this bean would be hit again a new instance would be created. Instead, nothing happens and my member variables are all still intact with the values from the previous conversation.

      Here is the code flow:
      pages.xml causes a load method to be invoked on a conversation bean marked with "@Begin(join=true)". This load method instantiates and loads data into a custom DataModel member variable.

      User causes the event to fire which calls the method above with "@End". When the page is re-rendered, the data model is not null as expected and the user is displayed a old list of data.

      From my log, here is what happens during the event:
      16:03:51,304 DEBUG [LiveReportBean] Received application set change event. Old: COPY, New: APSHELL
      16:03:51,305 DEBUG [Manager] Ending long-running conversation
      16:03:51,305 DEBUG [Manager] Storing conversation state: 95
      16:03:51,309 DEBUG [DebugPhaseListener] The phase INVOKE_APPLICATION(5) has completed.


      Here is the rendering of the next page:
      16:03:51,902 DEBUG [DebugPhaseListener] The phase RESTORE_VIEW(1) is about to start.
      16:03:51,903 DEBUG [Manager] Found conversation id in request parameter: 95
      16:03:51,903 DEBUG [Manager] Restoring conversation with id: 95


      As you can see, although conversation #95 was ended, it is still open on the next request.

      I am using Seam 1.1