/** * Creates a new conversation model on a wavelet. * * @param wavelet wavelet with which to back the conversation * @return a conversation */ private WaveletBasedConversation createNewConversation(ObservableWavelet wavelet) { assert IdUtil.isConversationalId(wavelet.getId()); // Add conversation structure to the wavelet, then get the conversation // which may be constructed in the waiter. WaveletBasedConversation.makeWaveletConversational(wavelet); // The container will have created the conversation. assert conversations.containsKey(wavelet); return conversations.get(wavelet); }
/** * Tests that makeWaveletConversational does so. */ public void testHackMakeWaveletConversationalMakesConversation() { Wavelet wavelet = waveView.createWavelet(); WaveletBasedConversation.makeWaveletConversational(wavelet); assertTrue(WaveletBasedConversation.waveletHasConversation(wavelet)); }
/** * Tests that makeWaveletConversational does so. */ public void testHackMakeWaveletConversationalMakesConversation() { Wavelet wavelet = waveView.createWavelet(); WaveletBasedConversation.makeWaveletConversational(wavelet); assertTrue(WaveletBasedConversation.waveletHasConversation(wavelet)); }
OpBasedWavelet opBasedWavelet = newWavelet.getOpBasedWavelet(participant); WaveletBasedConversation.makeWaveletConversational(opBasedWavelet);
public TestingWaveletData( WaveId waveId, WaveletId waveletId, ParticipantId author, boolean isConversational) { waveletData = new WaveletDataImpl(waveletId, author, 1234567890, 0, HashedVersion.unsigned(0), 0, waveId, BasicFactories.observablePluggableMutableDocumentFactory()); userWaveletData = new WaveletDataImpl(WaveletId.of("example.com", "user+foo@example.com"), author, 1234567890, 0, HashedVersion.unsigned(0), 0, waveId, BasicFactories.observablePluggableMutableDocumentFactory()); OpBasedWavelet wavelet = new OpBasedWavelet(waveId, waveletData, new BasicWaveletOperationContextFactory(author), ParticipationHelper.DEFAULT, SilentOperationSink.Executor.<WaveletOperation, WaveletData>build(waveletData), SilentOperationSink.VOID); ReadOnlyWaveView waveView = new ReadOnlyWaveView(waveId); waveView.addWavelet(wavelet); if (isConversational) { ConversationView conversationView = WaveBasedConversationView.create(waveView, FakeIdGenerator.create()); WaveletBasedConversation.makeWaveletConversational(wavelet); conversation = conversationView.getRoot(); conversation.addParticipant(author); } else { conversation = null; } waveViewData = WaveViewDataImpl.create(waveId, ImmutableList.of(waveletData, userWaveletData)); }
public TestingWaveletData( WaveId waveId, WaveletId waveletId, ParticipantId author, boolean isConversational) { waveletData = new WaveletDataImpl(waveletId, author, 1234567890, 0, HashedVersion.unsigned(0), 0, waveId, BasicFactories.observablePluggableMutableDocumentFactory()); userWaveletData = new WaveletDataImpl(WaveletId.of("example.com", "user+foo@example.com"), author, 1234567890, 0, HashedVersion.unsigned(0), 0, waveId, BasicFactories.observablePluggableMutableDocumentFactory()); OpBasedWavelet wavelet = new OpBasedWavelet(waveId, waveletData, new BasicWaveletOperationContextFactory(author), ParticipationHelper.DEFAULT, SilentOperationSink.Executor.<WaveletOperation, WaveletData>build(waveletData), SilentOperationSink.VOID); ReadOnlyWaveView waveView = new ReadOnlyWaveView(waveId); waveView.addWavelet(wavelet); if (isConversational) { ConversationView conversationView = WaveBasedConversationView.create(waveView, FakeIdGenerator.create()); WaveletBasedConversation.makeWaveletConversational(wavelet); conversation = conversationView.getRoot(); conversation.addParticipant(author); } else { conversation = null; } waveViewData = WaveViewDataImpl.create(waveId, ImmutableList.of(waveletData, userWaveletData)); }
/** * Constructs a new {@link OperationServiceHelper} with a wavelet with the * name and participant that are passed in. * * @param waveletName the name of the empty wavelet to open in the context. * @param participant the participant that should be on that empty wavelet. */ public OperationServiceHelper(WaveletName waveletName, ParticipantId participant) { waveletProvider = mock(WaveletProvider.class); EventDataConverter converter = new EventDataConverterV22(); ObservableWaveletData waveletData = WaveletDataImpl.Factory.create(DOCUMENT_FACTORY).create( new EmptyWaveletSnapshot(waveletName.waveId, waveletName.waveletId, participant, HASH_FACTORY.createVersionZero(waveletName), 0L)); waveletData.addParticipant(participant); BasicWaveletOperationContextFactory CONTEXT_FACTORY = new BasicWaveletOperationContextFactory(participant); SilentOperationSink<WaveletOperation> executor = SilentOperationSink.Executor.<WaveletOperation, WaveletData>build(waveletData); OpBasedWavelet wavelet = new OpBasedWavelet(waveletData.getWaveId(), waveletData, CONTEXT_FACTORY, ParticipationHelper.DEFAULT, executor, SilentOperationSink.VOID); // Make a conversation with an empty root blip WaveletBasedConversation.makeWaveletConversational(wavelet); ConversationUtil conversationUtil = new ConversationUtil(FakeIdGenerator.create()); ObservableConversation conversation = conversationUtil.buildConversation(wavelet).getRoot(); conversation.getRootThread().appendBlip(); context = new OperationContextImpl(waveletProvider, converter, conversationUtil); context.putWavelet(waveletName.waveId, waveletName.waveletId, new RobotWaveletData(waveletData, HASH_FACTORY.createVersionZero(waveletName))); }
@Override protected void setUp() throws Exception { conversationUtil = new ConversationUtil(FakeIdGenerator.create()); eventGenerator = new EventGenerator(ROBOT_NAME, conversationUtil); waveletData = WaveletDataImpl.Factory.create(DOCUMENT_FACTORY).create( new EmptyWaveletSnapshot(WAVELET_NAME.waveId, WAVELET_NAME.waveletId, ALEX, HASH_FACTORY.createVersionZero(WAVELET_NAME), 0L)); // Robot should be participant in snapshot before deltas // otherwise events will be filtered out. waveletData.addParticipant(ROBOT); waveletData.addParticipant(ALEX); waveletData.setVersion(1); SilentOperationSink<WaveletOperation> executor = SilentOperationSink.Executor.<WaveletOperation, WaveletData> build(waveletData); output = new CapturingOperationSink<WaveletOperation>(); wavelet = new OpBasedWavelet(waveletData.getWaveId(), waveletData, CONTEXT_FACTORY, ParticipationHelper.DEFAULT, executor, output); // Make a conversation and clear the sink WaveletBasedConversation.makeWaveletConversational(wavelet); conversationUtil.buildConversation(wavelet).getRoot().getRootThread().appendBlip(); output.clear(); }
@Override protected void setUp() throws Exception { conversationUtil = new ConversationUtil(FakeIdGenerator.create()); eventGenerator = new EventGenerator(ROBOT_NAME, conversationUtil); waveletData = WaveletDataImpl.Factory.create(DOCUMENT_FACTORY).create( new EmptyWaveletSnapshot(WAVELET_NAME.waveId, WAVELET_NAME.waveletId, ALEX, HASH_FACTORY.createVersionZero(WAVELET_NAME), 0L)); // Robot should be participant in snapshot before deltas // otherwise events will be filtered out. waveletData.addParticipant(ROBOT); waveletData.addParticipant(ALEX); waveletData.setVersion(1); SilentOperationSink<WaveletOperation> executor = SilentOperationSink.Executor.<WaveletOperation, WaveletData> build(waveletData); output = new CapturingOperationSink<WaveletOperation>(); wavelet = new OpBasedWavelet(waveletData.getWaveId(), waveletData, CONTEXT_FACTORY, ParticipationHelper.DEFAULT, executor, output); // Make a conversation and clear the sink WaveletBasedConversation.makeWaveletConversational(wavelet); conversationUtil.buildConversation(wavelet).getRoot().getRootThread().appendBlip(); output.clear(); }