/** * Invalidates this blip. It may no longer be accessed. */ void invalidate() { checkIsUsable(); manifestBlip.removeListener(this); isUsable = false; }
@Override protected void assertBlipValid(ConversationBlip blip) { ((WaveletBasedConversationBlip)blip).checkIsUsable(); }
@Override protected void assertBlipValid(ConversationBlip blip) { ((WaveletBasedConversationBlip)blip).checkIsUsable(); }
@Override protected void assertBlipInvalid(ConversationBlip blip) { try { ((WaveletBasedConversationBlip)blip).checkIsUsable(); fail("Expected blip to be invalid"); } catch (IllegalStateException expected) { } }
@Override protected void assertBlipInvalid(ConversationBlip blip) { try { ((WaveletBasedConversationBlip)blip).checkIsUsable(); fail("Expected blip to be invalid"); } catch (IllegalStateException expected) { } }
@Override public WaveletBasedConversationThread addReplyThread() { checkIsUsable(); String id = helper.createThreadId(); manifestBlip.appendReply(id, false); return replies.get(id); }
@Override public WaveletBasedConversationThread addReplyThread(final int location) { checkIsUsable(); final String threadId = helper.createThreadId(); createInlineReplyAnchor(threadId, location); manifestBlip.appendReply(threadId, true); return replies.get(threadId); }
@Override public void delete() { checkIsUsable(); Collection<WaveletBasedConversationThread> allReplies = CollectionUtils.createQueue(); CollectionUtils.copyValuesToJavaCollection(replies, allReplies); // Delete reply threads. // TODO(anorth): Move this loop to WBCT, where it can delete all the // inline reply anchors in one pass. for (WaveletBasedConversationThread replyThread : allReplies) { deleteThread(replyThread); } // All replies have been deleted, so remove this empty blip. parentThread.deleteBlip(this, true); }