@Override public ObservableManifestThread adapt(DocumentEventRouter<? super E, E, ?> router, E element) { return DocumentBasedManifestThread.create(router, element); }
DocumentBasedManifestThread thread = new DocumentBasedManifestThread(blips, id, inlined); thread.addListener(threadListener); verify(blips).addListener(blipsListener.capture()); assertEquals(blip, thread.appendBlip("b+1")); assertEquals(blip, thread.insertBlip(1, "b+2")); assertEquals(blip, thread.getBlip(2)); assertEquals(iterator, thread.getBlips()); assertEquals(1, thread.indexOf(blip)); assertTrue(thread.removeBlip(blip)); assertEquals(2, thread.numBlips()); assertEquals("cc", thread.getId()); assertFalse(thread.isInline()); thread.removeListener(threadListener); blipsListener.getValue().onValueAdded(blip); verifyNoMoreInteractions(threadListener);
/** * Creates a document-based thread. * * @param router router for the document the container belongs to * @param container the element that corresponds to the <thread> tag */ static <E> DocumentBasedManifestThread create(DocumentEventRouter<? super E, E, ?> router, E container) { return new DocumentBasedManifestThread( DocumentBasedElementList.create(router, container, BLIP_TAG, DocumentBasedManifestBlip.<E> factory()), DocumentBasedBasicValue.create(router, container, Serializer.STRING, THREAD_ID_ATTR), DocumentBasedBasicValue.create(router, container, Serializer.BOOLEAN, INLINE_ATTR)); }
DocumentBasedManifestThread thread = new DocumentBasedManifestThread(blips, id, inlined); thread.addListener(threadListener); verify(blips).addListener(blipsListener.capture()); assertEquals(blip, thread.appendBlip("b+1")); assertEquals(blip, thread.insertBlip(1, "b+2")); assertEquals(blip, thread.getBlip(2)); assertEquals(iterator, thread.getBlips()); assertEquals(1, thread.indexOf(blip)); assertTrue(thread.removeBlip(blip)); assertEquals(2, thread.numBlips()); assertEquals("cc", thread.getId()); assertFalse(thread.isInline()); thread.removeListener(threadListener); blipsListener.getValue().onValueAdded(blip); verifyNoMoreInteractions(threadListener);
/** * Creates a document-based manifest backed by an empty document. * * @param doc the document on which to base the manifest * @precondition {@code !documentHasManifest(doc)} */ @VisibleForTesting public static <E> DocumentBasedManifest createNew( ObservableMutableDocument<? super E, E, ?> doc) { // If the precondition holds then the document must be empty. E top = DocHelper.createFirstTopLevelElement(doc, MANIFEST_TOP_TAG); DocumentEventRouter<? super E, E, ?> router = DefaultDocumentEventRouter.create(doc); return new DocumentBasedManifest( DocumentBasedManifestThread.create(router, top), DocumentBasedStructuredValue.create(router, top, Serializer.STRING, AnchorKey.class)); }
/** * Creates a document-based manifest backed by a document with existing * conversation structure. * * @param router event router for the document on which to base the manifest * @precondition {@code documentHasManifest(doc)} */ static <E> DocumentBasedManifest createOnExisting( DocumentEventRouter<? super E, E, ?> router, E top) { Preconditions.checkArgument(router.getDocument().getTagName(top).equals(MANIFEST_TOP_TAG), "Invalid manifest top tag %s", router.getDocument().getTagName(top)); return new DocumentBasedManifest( DocumentBasedManifestThread.create(router, top), DocumentBasedStructuredValue.create(router, top, Serializer.STRING, AnchorKey.class)); }
private <E> ObservableManifestThread buildThreadElement2( ObservableMutableDocument<? super E, E, ?> document, String id) { E root = DocHelper.getOrCreateFirstTopLevelElement(document, "conversation"); E blip = document.createChildElement(root, "blip", CollectionUtils.immutableMap("id", "b+top")); E container = document.createChildElement(blip, "thread", CollectionUtils.immutableMap("id", id)); return DocumentBasedManifestThread.create(DefaultDocumentEventRouter.create(document), container); } }
private <E> ObservableManifestThread buildThreadElement2( ObservableMutableDocument<? super E, E, ?> document, String id) { E root = DocHelper.getOrCreateFirstTopLevelElement(document, "conversation"); E blip = document.createChildElement(root, "blip", CollectionUtils.immutableMap("id", "b+top")); E container = document.createChildElement(blip, "thread", CollectionUtils.immutableMap("id", id)); return DocumentBasedManifestThread.create(DefaultDocumentEventRouter.create(document), container); } }