}
private void exportDeltas(WaveId waveId, WaveletId waveletId, ProtocolHashedVersion lastVersion,
Set<AttachmentId> attachmentIds) throws IOException {
HashedVersion zeroVersion = HASH_FACTORY.createVersionZero(WaveletName.of(waveId, waveletId));
ProtocolHashedVersion version = CoreWaveletOperationSerializer.serialize(zeroVersion);
for (int fetchNum = 0; version.getVersion() != lastVersion.getVersion(); fetchNum++) {
Console.print(" getting deltas from version " + version.getVersion() + " ...");
final List<byte[]> deltas = Lists.newArrayList();
final AtomicReference<byte[]> targetVersion = new AtomicReference<byte[]>();
api.exportRawDeltas(waveId, waveletId,
version.toByteArray(), lastVersion.toByteArray(), rpcServerUrl, new RawDeltasListener() {
@Override
public void onSuccess(List<byte[]> rawDeltas, byte[] rawTargetVersion) {
deltas.addAll(rawDeltas);
targetVersion.set(rawTargetVersion);
}
@Override
public void onFailire(String message) {
Console.error(search);
}
});
if (deltas.isEmpty()) {
Console.println(" empty response");
continue;
}
version = ProtocolHashedVersion.parseFrom(targetVersion.get());
Console.println(" Ok, got to version " + version.getVersion());
writeDeltasToFile(waveId, waveletId, deltas, fetchNum);
for (byte[] delta : deltas) {
attachmentIds.addAll(DeltaParser.getAttachemntIds(ProtocolWaveletDelta.parseFrom(delta)));
}
}