if (delta.getTargetVersion().getVersion() > deltaHistory.getCurrentVersion()) {
throw new TransformException("Client has a newer version than server knows. client: "
+ delta.getTargetVersion() + ", server: "
+ deltaHistory.getCurrentVersion());
}
WaveletDelta result = delta;
while (result.getTargetVersion().getVersion() < deltaHistory.getCurrentVersion()) {
TransformedWaveletDelta serverDelta =
deltaHistory.getDeltaStartingAt(result.getTargetVersion().getVersion());
if (serverDelta == null) {
// Note that this will trigger if the available history changes out from
// under us. This should not happen as the caller of this method should
// control changes to the underlying set via locks, e.g. writeLock in
// the WS's WaveletContext.
throw new IllegalStateException("No delta at version: " + result.getTargetVersion());
}
DeltaPair pair = new DeltaPair(result, serverDelta).transform();
result = new WaveletDelta(delta.getAuthor(), serverDelta.getResultingVersion(),
pair.getClient());
}
return result;
}