So a sample use case is a hotel or airplane booking (or even eBay) app where the user has multiple tabs (and therefore multiple LRCs) running simultaneously inside the same session.  If I could getTimeout() of a non-current conversation then I could display to a user x seconds prior to the LRC timing out a warning stating that &quot;your work on tab Y is going to be lost in 30 secs&quot;.  That way they know which conversations are going to timeout when and won&#39;t lose work in important conversations.<br>
<br>In practical cases, I&#39;m not sure how many apps actually need or use the workspace switcher concept (org.jboss.seam.core.conversationEntries) that is demonstrated in the hotel booking Seam example.  I have yet to use the conversation switcher (conversationEntries and conversationList) in a real-world Seam app.<br>
<br>What about the rest of the API related to conversations from the Seam core?<br><br><table summary="" border="1" cellpadding="3" cellspacing="0" width="100%"><tbody><tr class="TableRowColor" bgcolor="white"><td width="15%">
<b><a href="http://docs.jboss.org/seam/2.2.0.GA/api/org/jboss/seam/core/Conversation.html" title="class in org.jboss.seam.core">Conversation</a></b></td>
<td>Allows the conversation timeout to be set per-conversation,
 and the conversation description and switchable outcome to
 be set when the application requires workspace management
 functionality.</td>
</tr>
<tr class="TableRowColor" bgcolor="white">
<td width="15%"><b><a href="http://docs.jboss.org/seam/2.2.0.GA/api/org/jboss/seam/core/ConversationalInterceptor.html" title="class in org.jboss.seam.core">ConversationalInterceptor</a></b></td>
<td>Check that a conversational bean is not being invoked
 outside the scope of a long-running conversation.</td>
</tr>
<tr class="TableRowColor" bgcolor="white">
<td width="15%"><b><a href="http://docs.jboss.org/seam/2.2.0.GA/api/org/jboss/seam/core/ConversationEntries.html" title="class in org.jboss.seam.core">ConversationEntries</a></b></td>
<td>Manages a map of conversation id to ConversationEntry 
 in the session context.</td>
</tr>
<tr class="TableRowColor" bgcolor="white">
<td width="15%"><b><a href="http://docs.jboss.org/seam/2.2.0.GA/api/org/jboss/seam/core/ConversationEntry.html" title="class in org.jboss.seam.core">ConversationEntry</a></b></td>
<td>Metadata about an active conversation.</td>
</tr>
<tr class="TableRowColor" bgcolor="white">
<td width="15%"><b><a href="http://docs.jboss.org/seam/2.2.0.GA/api/org/jboss/seam/core/ConversationIdGenerator.html" title="class in org.jboss.seam.core">ConversationIdGenerator</a></b></td>
<td> </td>
</tr>
<tr class="TableRowColor" bgcolor="white">
<td width="15%"><b><a href="http://docs.jboss.org/seam/2.2.0.GA/api/org/jboss/seam/core/ConversationInterceptor.html" title="class in org.jboss.seam.core">ConversationInterceptor</a></b></td>
<td>Implements annotation-based conversation demarcation.</td>
</tr>
<tr class="TableRowColor" bgcolor="white">
<td width="15%"><b><a href="http://docs.jboss.org/seam/2.2.0.GA/api/org/jboss/seam/core/ConversationList.html" title="class in org.jboss.seam.core">ConversationList</a></b></td>
<td>Factory for the conversation list</td>
</tr>
<tr class="TableRowColor" bgcolor="white">
<td width="15%"><b><a href="http://docs.jboss.org/seam/2.2.0.GA/api/org/jboss/seam/core/ConversationPropagation.html" title="class in org.jboss.seam.core">ConversationPropagation</a></b></td>
<td>Overrideable component for extracting the conversation id
 from a request.</td>
</tr>
<tr class="TableRowColor" bgcolor="white">
<td width="15%"><b><a href="http://docs.jboss.org/seam/2.2.0.GA/api/org/jboss/seam/core/ConversationStack.html" title="class in org.jboss.seam.core">ConversationStack</a></b></td>
<td>Factory for the &quot;breadcrumbs&quot;, a stack with all
 parent conversations of the current conversation.</td></tr></tbody></table><br>Are they going to be dismissed in the CDI API or slated for PE implementations like in Seam 3?  Currently all I see in CDI API that is conversation-related is Conversation interface and ConversationScoped annotation.<br>
<br>And also, have you guys thought about using an abstract class rather than an interface (or perhaps in addition to an interface) for some of the conversation-related API?  So have the basic methods in the interface and the &quot;bonus&quot; ones in an abstract class.<br>
<br><div class="gmail_quote">On Sat, Jan 30, 2010 at 11:22 AM, Nicklas Karlsson <span dir="ltr">&lt;<a href="mailto:nickarls@gmail.com">nickarls@gmail.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
<div class="im">&gt;&gt; then NKarlsson&#39;s ConversationManager interface has more methods than the CDI version above, no?  So what do you mean by &quot;These are already available on CDI&#39;s Conversation interface.&quot;?  I think that ConversationManager is a better name for a manager component than simply Conversation.<br>

&gt;<br>
&gt; These API are for different purposes, Conversation is for user control of the conversation, ConversationManager is an SPI that frameworks which integrate with Weld can use to control the built in conversation context.<br>

<br>
</div>Yes, a Conversation is pretty much a plain parameter object that is<br>
tossed around and evaluated at the end of the request by the CM.<br>
<div class="im"><br>
&gt;<br>
&gt;&gt;  What if I wanted to getTimeout() of a non-current conversation in the case there are multiple concurrent conversations in the current session?<br>
&gt;<br>
&gt; In that case, we need to know the use case.<br>
&gt;<br>
&gt; This can easily be solved by changing getConversations to return a Map.<br>
<br>
</div>Hmm, I&#39;m not that big of a fan of returning anything with a<br>
Conversation in it since the implementation is a request scoped bean<br>
and therfore proxied if stuck in a Map so it needs some &quot;dehydration&quot;<br>
anyway to a normal object with similar attributes (well, actually only<br>
the cid and the timout are interesting from a CM point of view)<br>
<br>
But do hit me with a usecase.<br>
---<br>
Nik<br>
</blockquote></div><br>