* @param msg
* @throws TargetResolutionException
*/
private void conversationPreinvoke(Message msg) {
if (conversational) {
ReferenceParameters parameters = msg.getFrom().getReferenceParameters();
// in some cases the ConversationID that should be used comes in with the
// message, e.g. when ws binding is in use.
Object convID = parameters.getConversationID();
if (convID != null) {
conversationID = convID;
}
conversation = conversationManager.getConversation(conversationID);
if (conversation == null || conversation.getState() == ConversationState.ENDED) {
conversation = conversationManager.startConversation(conversationID);
conversation.initializeConversationAttributes(wire.getTarget().getComponent());
} else if (conversation.conversationalAttributesInitialized() == false) {
conversation.initializeConversationAttributes(wire.getTarget().getComponent());
} else if (conversation.isExpired()){
throw new ConversationEndedException("Conversation has expired.");
}
conversation.updateLastReferencedTime();
parameters.setConversationID(conversation.getConversationID());
}
}