// side (they are never persisted). The UDW ID is not needed in the
// code below but the model code asks for it anyway. We arbitrarily use
// DISABLED_UDW_ID.
IdHack.FAKE_WAVELET_NAME.waveletId, IdHack.DISABLED_UDW_ID,
random);
final WaveViewDataImpl waveData = WaveViewDataImpl.create(IdHack.FAKE_WAVELET_NAME.waveId);
final FakeDocument.Factory docFactory = BasicFactories.fakeDocumentFactory();
WaveletFactory<OpBasedWavelet> waveletFactory = new WaveletFactory<OpBasedWavelet>() {
@Override
public OpBasedWavelet create(WaveId waveId, WaveletId waveletId, ParticipantId creator) {
final WaveletDataImpl data = new WaveletDataImpl(
waveletId,
creator,
creationTime,
0L,
HashedVersion.unsigned(0),
creationTime,
waveId,
docFactory);
SilentOperationSink<WaveletOperation> executor =
new SilentOperationSink<WaveletOperation>() {
@Override
public void consume(WaveletOperation operation) {
try {
operation.apply(data);
} catch (OperationException e) {
throw new OperationRuntimeException("Error applying op", e);
}
}
};
return new OpBasedWavelet(waveId,
data,
new BasicWaveletOperationContextFactory(creator) {
@Override public long currentTimeMillis() {
return creationTime;
}
},
ParticipationHelper.IGNORANT,
executor,
sink);
}
};
WaveViewImpl<?> wave = WaveViewImpl.create(
waveletFactory, waveData.getWaveId(), gen, creator, WaveletConfigurator.ADD_CREATOR);
// Build a conversation with a root blip.
ConversationView v = WaveBasedConversationView.create(wave, gen);
Conversation c = v.createRoot();
ConversationThread thread = c.getRootThread();