public void testFindBlipParent() { Conversation conversation = makeConversation(); ConversationBlip first = conversation.getRootThread().getFirstBlip(); ConversationBlip second = conversation.getRootThread().appendBlip(); ConversationBlip reply = first.addReplyThread().appendBlip(); ConversationBlip secondReply = reply.getThread().appendBlip(); EventDataConverterV21 converter = new EventDataConverterV21(); assertNull(converter.findBlipParent(first)); assertSame(first, converter.findBlipParent(second)); assertSame(first, converter.findBlipParent(reply)); assertSame(reply, converter.findBlipParent(secondReply)); }
public void testFindBlipPreviousSibling() { Conversation conversation = makeConversation(); ConversationBlip first = conversation.getRootThread().getFirstBlip(); ConversationBlip second = conversation.getRootThread().appendBlip(); ConversationBlip reply = first.addReplyThread().appendBlip(); ConversationBlip secondReply = reply.getThread().appendBlip(); assertNull(EventDataConverterV21.findPreviousSibling(first)); assertSame(first, EventDataConverterV21.findPreviousSibling(second)); assertNull(EventDataConverterV21.findPreviousSibling(reply)); assertSame(reply, EventDataConverterV21.findPreviousSibling(secondReply)); }
public void testFindBlipNextSibling() { Conversation conversation = makeConversation(); ConversationBlip first = conversation.getRootThread().getFirstBlip(); ConversationBlip second = conversation.getRootThread().appendBlip(); ConversationBlip reply = first.addReplyThread().appendBlip(); ConversationBlip secondReply = reply.getThread().appendBlip(); assertSame(second, EventDataConverterV21.findNextSibling(first)); assertNull(EventDataConverterV21.findNextSibling(second)); assertSame(secondReply, EventDataConverterV21.findNextSibling(reply)); assertNull(EventDataConverterV21.findNextSibling(secondReply)); }
public void testToBlipDataHandlesBlipWithEmptyDocument() throws Exception { Blips.init(); Conversation conversation = makeConversation(); Wavelet wavelet = mock(Wavelet.class); when(wavelet.getWaveId()).thenReturn(WAVE_ID); when(wavelet.getId()).thenReturn(WAVELET_ID); EventDataConverterV21 converter = new EventDataConverterV21(); assertEquals("", converter.toBlipData(conversation.getRootThread().getFirstBlip(), wavelet, new EventMessageBundle(null, null)).getContent()); }
@Override public BlipData toBlipData(ConversationBlip blip, Wavelet wavelet, EventMessageBundle eventMessageBundle) { ConversationBlip parentBlip = findBlipParent(blip); BlipData blipData = new BlipData(); blipData.setCreator(blip.getAuthorId().getAddress()); blipData.setContributors(idsToParticipantIdList(blip.getContributorIds())); blipData.setBlipId(blip.getId()); blipData.setLastModifiedTime(blip.getLastModifiedTime()); blipData.setVersion(blip.getLastModifiedVersion()); blipData.setParentBlipId(parentBlip == null ? null : parentBlip.getId()); blipData.setWaveId(ApiIdSerializer.instance().serialiseWaveId(wavelet.getWaveId())); blipData.setWaveletId(ApiIdSerializer.instance().serialiseWaveletId(wavelet.getId())); blipData.setChildBlipIds(toBlipIdList(findBlipChildren(blip))); ApiView apiView = new ApiView(blip.getContent(), wavelet); // Set content. blipData.setContent(apiView.apiContents()); // Set Annotations. blipData.setAnnotations(extractAnnotations(blip.getContent(), apiView)); // blip.getContent().rangedAnnotations(0, blip.getContent().size(), null), // Set Form Elements. blipData.setElements(ElementSerializer.serialize(blip.getContent(), wavelet)); return blipData; }
/** * @return A singleton instance of a {@link EventDataConverterManager}. */ @Singleton @Provides static EventDataConverterManager provideEventDataConverterManager() { // v0.1 till v0.21 use the same event data converter. NavigableMap<ProtocolVersion, EventDataConverter> converters = Maps.newTreeMap(); EventDataConverterV21 eventDataConverterV21 = new EventDataConverterV21(); converters.put(ProtocolVersion.V1, eventDataConverterV21); converters.put(ProtocolVersion.V2, eventDataConverterV21); converters.put(ProtocolVersion.V2_1, eventDataConverterV21); converters.put(ProtocolVersion.V2_2, new EventDataConverterV22()); return new EventDataConverterManager(converters); }
/** * Finds the children of a blip, defined as the next sibling blip and the * first blip in each reply thread. * * @param blip the blip. * @return the children of the given blip. */ @Override public List<ConversationBlip> findBlipChildren(ConversationBlip blip) { List<ConversationBlip> siblings = Lists.newArrayList(); ConversationBlip nextSibling = findNextSibling(blip); if (nextSibling != null) { siblings.add(nextSibling); } for (ConversationThread reply : blip.getReplyThreads()) { if (reply.getFirstBlip() != null) { siblings.add(reply.getFirstBlip()); } } return siblings; }
/** * Finds the parent of a blip. The parent is the preceding blip in the thread, * or the blip to which the thread is a reply for the first blip in a thread. * The first blip of the root thread has no parent. * * @param blip the blip. * @return the blip's parent, or {@code null} if the blip is the first blip * in a conversation. */ @Override public ConversationBlip findBlipParent(ConversationBlip blip) { ConversationThread containingThread = blip.getThread(); if (containingThread.getFirstBlip() == blip && containingThread != blip.getConversation().getRootThread()) { return containingThread.getParentBlip(); } return findPreviousSibling(blip); }
@Override public BlipData toBlipData(ConversationBlip blip, Wavelet wavelet, EventMessageBundle eventMessageBundle) { BlipData blipData = super.toBlipData(blip, wavelet, eventMessageBundle); String threadId = blip.getThread().getId(); blipData.setThreadId(threadId); // If it's the root thread, that doesn't have thread id, then skip. if (!threadId.isEmpty()) { ConversationThread thread = blip.getThread(); addThread(eventMessageBundle, thread, -1, wavelet); } // Add the inline reply threads. List<String> threadIds = Lists.newLinkedList(); for (LocatedReplyThread<? extends ConversationThread> thread : blip.locateReplyThreads()) { String replyThreadId = thread.getThread().getId(); threadIds.add(replyThreadId); addThread(eventMessageBundle, thread.getThread(), thread.getLocation(), wavelet); } blipData.setReplyThreadIds(threadIds); return blipData; }
waveletData.setWaveletId(ApiIdSerializer.instance().serialiseWaveletId(wavelet.getId())); waveletData.setLastModifiedTime(wavelet.getLastModifiedTime()); waveletData.setParticipants(idsToParticipantIdList(wavelet.getParticipantIds())); waveletData.setRootBlipId(conversation.getRootThread().getFirstBlip().getId()); waveletData.setTitle(getTitle(wavelet, conversation)); waveletData.setVersion(wavelet.getVersion());
@Override public WaveletData toWaveletData(Wavelet wavelet, Conversation conversation, EventMessageBundle eventMessageBundle) { WaveletData waveletData = super.toWaveletData(wavelet, conversation, eventMessageBundle); List<String> blipIds = Lists.newLinkedList(); for (ConversationBlip conversationBlip : conversation.getRootThread().getBlips()) { blipIds.add(conversationBlip.getId()); } waveletData.setRootThread(new BlipThread("", -1 , blipIds, null)); return waveletData; }
public void testFindBlipParent() { Conversation conversation = makeConversation(); ConversationBlip first = conversation.getRootThread().getFirstBlip(); ConversationBlip second = conversation.getRootThread().appendBlip(); ConversationBlip reply = first.addReplyThread().appendBlip(); ConversationBlip secondReply = reply.getThread().appendBlip(); EventDataConverterV21 converter = new EventDataConverterV21(); assertNull(converter.findBlipParent(first)); assertSame(first, converter.findBlipParent(second)); assertSame(first, converter.findBlipParent(reply)); assertSame(reply, converter.findBlipParent(secondReply)); }
public void testToBlipDataHandlesBlipWithEmptyDocument() throws Exception { Blips.init(); Conversation conversation = makeConversation(); Wavelet wavelet = mock(Wavelet.class); when(wavelet.getWaveId()).thenReturn(WAVE_ID); when(wavelet.getId()).thenReturn(WAVELET_ID); EventDataConverterV21 converter = new EventDataConverterV21(); assertEquals("", converter.toBlipData(conversation.getRootThread().getFirstBlip(), wavelet, new EventMessageBundle(null, null)).getContent()); }
public void testFindBlipPreviousSibling() { Conversation conversation = makeConversation(); ConversationBlip first = conversation.getRootThread().getFirstBlip(); ConversationBlip second = conversation.getRootThread().appendBlip(); ConversationBlip reply = first.addReplyThread().appendBlip(); ConversationBlip secondReply = reply.getThread().appendBlip(); assertNull(EventDataConverterV21.findPreviousSibling(first)); assertSame(first, EventDataConverterV21.findPreviousSibling(second)); assertNull(EventDataConverterV21.findPreviousSibling(reply)); assertSame(reply, EventDataConverterV21.findPreviousSibling(secondReply)); }
public void testFindBlipNextSibling() { Conversation conversation = makeConversation(); ConversationBlip first = conversation.getRootThread().getFirstBlip(); ConversationBlip second = conversation.getRootThread().appendBlip(); ConversationBlip reply = first.addReplyThread().appendBlip(); ConversationBlip secondReply = reply.getThread().appendBlip(); assertSame(second, EventDataConverterV21.findNextSibling(first)); assertNull(EventDataConverterV21.findNextSibling(second)); assertSame(secondReply, EventDataConverterV21.findNextSibling(reply)); assertNull(EventDataConverterV21.findNextSibling(secondReply)); }
public void testResolveContext() throws Exception { eventMessages.requireBlip( conversation.getRootThread().getFirstBlip().getId(), Lists.newArrayList(Context.CHILDREN)); ContextResolver.resolveContext( eventMessages, wavelet, conversation, new EventDataConverterV21()); Set<String> blips = eventMessages.getBlipData().keySet(); assertEquals(2, blips.size()); for (ConversationBlip blip : conversation.getRootThread().getBlips()) { assertTrue(blips.contains(blip.getId())); } }
public void testResolveContext() throws Exception { eventMessages.requireBlip( conversation.getRootThread().getFirstBlip().getId(), Lists.newArrayList(Context.CHILDREN)); ContextResolver.resolveContext( eventMessages, wavelet, conversation, new EventDataConverterV21()); Set<String> blips = eventMessages.getBlipData().keySet(); assertEquals(2, blips.size()); for (ConversationBlip blip : conversation.getRootThread().getBlips()) { assertTrue(blips.contains(blip.getId())); } }
public void testResolveRootContext() throws Exception { ConversationBlip newBlip = conversation.getRootThread().appendBlip(); eventMessages.requireBlip(newBlip.getId(), Lists.newArrayList(Context.ROOT)); ContextResolver.resolveContext( eventMessages, wavelet, conversation, new EventDataConverterV21()); Set<String> blips = eventMessages.getBlipData().keySet(); assertEquals(2, blips.size()); assertTrue(blips.contains(conversation.getRootThread().getFirstBlip().getId())); assertTrue(blips.contains(newBlip.getId())); }
public void testResolveRootContext() throws Exception { ConversationBlip newBlip = conversation.getRootThread().appendBlip(); eventMessages.requireBlip(newBlip.getId(), Lists.newArrayList(Context.ROOT)); ContextResolver.resolveContext( eventMessages, wavelet, conversation, new EventDataConverterV21()); Set<String> blips = eventMessages.getBlipData().keySet(); assertEquals(2, blips.size()); assertTrue(blips.contains(conversation.getRootThread().getFirstBlip().getId())); assertTrue(blips.contains(newBlip.getId())); }