Hi John,
You are mixing two concepts here: conversation propagation and auto-
conversations. These two operate separately. Auto-conversations are
started _and_ ended automatically. You can use this, for example, on a
page where a conversational component is added and later removed
again. The conversation will stay active for as long as the component is on
the page. If you wish to take control of an auto-conversation, you need to
inject AutoConversation and call setAutomatic(false).
Best regards,
Emond
On Thursday 09 January 2014 15:34:30 John Sarman wrote:
> Emond,
> I finally had some time to go over the cdi rewrite and I on the first test
> I was reviewing I do not think the Conversation propagation is working
> correctly. In the test Class ConversationPropagatorTest, the first
> test testAutoConversationNonBookmarkable uses the Wicket
> page TestConversationalPage which extends ConversationalComponent
to notify
> the framework the conversations should be managed automatically. The
> initial for loop iterates through the increment clicks to verify
> the TestConversationBean counter is incremented properly. This works
fine.
> Then the test clicks the next link, which goes to a non bookmarkable
page
> that also injects the TestConversationBean. At this point
> the TestConversationBean current count should be equal to the last
> increment from the first page, but it is 0. The increment link is clicked
> on that page and the count is incremented to 1, and every call after
that
> the TestConversationBean is reinjected but not part of the conversation
so
> the count is 0 then 1 and the test asserts (1) not the continuous
> incremented count. I realize that the test passes, but I think the test on
> the second for loop should read
> tester.clickLink("increment");
> tester.assertCount(i); // The value of i continues to increment from the
> first for loop.
> I have not went through the code yet, but it seems that as soon as next
> page that does not implement the ConversationalComponent interface,
> although it is a nonbookmarkable page, the conversation is not
propagated.
> My understanding of how Igor built 1.0 was that the
> ConversationalComponent could be used to automate the code to
begin a
> Conversation if one was not already active and the propagation was a
method
> to continue the conversation based on the way a page was created.
That is
> if a conversation was active and the next page in the pipeline was a
> nonbookmarkable page then the conversation was propagated
regardless if it
> implemented ConversationalComponent (assuming CDIConfiguration
propagation
> was set to NONBOOKMARKABLE) . I will continue to debug through the
code to
> determine why the conversation was not propagated, but please let me
know
> if I am not seeing eye to eye with how the code handles propagation.
>
> Thanks,
> John
>
>
>
>
>
> On Thu, Dec 12, 2013 at 2:23 AM, Emond Papegaaij
<[email protected]
> > wrote:
> >
> > This issue, we discussed earlier, is fixed. Propagation of the
> > conversation
> > works fine now.
> >
> > On Wednesday 11 December 2013 12:40:44 John Sarman wrote:
> > > Emond,
> > > Have you had a chance to work on the propagation code?
> > >
> > > Thanks,
> > > John
> > >
> > >
> > > On Mon, Nov 25, 2013 at 11:14 AM, Emond Papegaaij
> >
> > <[email protected]
> >
> > > > wrote:
> > > >
> > > > I've found the problem. It has nothing to do with associating a
> > > > conversation. The problem is that first all links are rendered, and
> >
> > only
> >
> > > > then the conversation is marked long-running. The auto-begin
and
> >
> > auto-end
> >
> > > > methods need to be moved to a IComponentInstantiationListener,
so
> >
> > the
> >
> > > > conversation can be started before the links are
> > > > rendered. onRequestHandlerExecuted simply is too late. I'll see if I
> >
> > can
> >
> > > > fix that tomorrow.
> > > >
> > > > Best regards,
> > > > Emond
> > > >
> > > >
> > > > On Fri, Nov 22, 2013 at 11:31 PM, John Sarman
> >
> > <[email protected]>
> >
> > > > wrote:
> > > > > Emond,
> > > > > If you want to quick test execute the code in a debugger and
look
> >
> > at the
> >
> > > > > Conversation object in the ConversationPropagator. You will
find
> >
> > that
> >
> > > > > is