/** * Creates and stores a conversation container. If the container has a * conversation then initializes that too. */ private ConversationContainer createContainer(ObservableWavelet wavelet) { ObservableDocument manifestDoc = wavelet.getDocument(IdConstants.MANIFEST_DOCUMENT_ID); DocEventRouter router = DefaultDocEventRouter.create(manifestDoc); ObservableSingleton<DocumentBasedManifest, Void> manifestContainer = DocumentBasedSingleton.create(router, manifestDoc.getDocumentElement(), DocumentBasedManifest.MANIFEST_TOP_TAG, DocumentBasedManifest.FACTORY); ConversationContainer container = new ConversationContainer(wavelet, manifestContainer); manifestContainer.addListener(container); containers.put(wavelet, container); WaveletBasedConversation conversation = container.getConversation(); if (conversation != null) { conversations.put(wavelet, conversation); triggerOnConversationAdded(conversation); } return container; }