public interface ConversationManager
| Modifier and Type | Method and Description |
|---|---|
Conversation |
beginConversation(ConversationParameters conversationParameters)
Begin a new conversation.
|
Conversation |
getConversation(ConversationId id)
Get the conversation with the provided id.
|
ConversationId |
parseConversationId(java.lang.String encodedId)
Parse the string-encoded conversationId into its object form.
|
Conversation beginConversation(ConversationParameters conversationParameters) throws ConversationException
conversationParameters - descriptive conversation parametersConversationException - an exception occuredConversation getConversation(ConversationId id) throws ConversationException
Implementors should take care to manage conversation identity correctly. Although it is not strictly required to return the same (==) Conversation object every time this method is called with a particular conversation id in a single execution thread, callers will expect to recieve an object that allows them to manipulate the identified conversation. In other words, the following is legal ConversationManager client code:
ConversationManager manager = ...;
ConversationId id = ...;
Conversation conv = manager.getConversation(id);
conv.lock();
try {
Conversation localReference = manager.getConversation(id);
// no need to lock since conversation 'id' is already locked
// even though possibly conv != localReference
localReference.putAttribute("foo", "bar");
Object foo = conv.getAttribute("foo");
}
finally {
conv.unlock();
}
id - the conversation idNoSuchConversationException - the id provided was invalidConversationExceptionConversationId parseConversationId(java.lang.String encodedId) throws ConversationException
ConversationId.toString().encodedId - the encoded idConversationException - an exception occured parsing the id