/** * 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); }
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 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)); }