/** Deserializes a protobuf to a HashedVersion POJO. */ public static HashedVersion deserialize(ProtocolHashedVersion hashedVersion) { final ByteString historyHash = hashedVersion.getHistoryHash(); return HashedVersion.of(hashedVersion.getVersion(), historyHash.toByteArray()); }
/** * Assert that an operation is unchanged when serialised then deserialised. * * @param op operation to check */ private static void assertReversible(WaveletOperation op) { // Test both (de)serialising a single operation... assertEquals(op, CoreWaveletOperationSerializer.deserialize( CoreWaveletOperationSerializer.serialize(op), OP_CONTEXT)); List<WaveletOperation> ops = ImmutableList.of(op, op, op); ParticipantId author = new ParticipantId("kalman@google.com"); HashedVersion hashedVersion = HashedVersion.unsigned(0); WaveletDelta delta = new WaveletDelta(author, hashedVersion, ops); ProtocolWaveletDelta serialized = CoreWaveletOperationSerializer.serialize(delta); WaveletDelta deserialized = CoreWaveletOperationSerializer.deserialize(serialized); assertEquals(hashedVersion.getVersion(), serialized.getHashedVersion().getVersion()); assertTrue(Arrays.equals(hashedVersion.getHistoryHash(), serialized.getHashedVersion().getHistoryHash().toByteArray())); assertDeepEquals(delta, deserialized); }
/** * Assert that an operation is unchanged when serialised then deserialised. * * @param op operation to check */ private static void assertReversible(WaveletOperation op) { // Test both (de)serialising a single operation... assertEquals(op, CoreWaveletOperationSerializer.deserialize( CoreWaveletOperationSerializer.serialize(op), OP_CONTEXT)); List<WaveletOperation> ops = ImmutableList.of(op, op, op); ParticipantId author = new ParticipantId("kalman@google.com"); HashedVersion hashedVersion = HashedVersion.unsigned(0); WaveletDelta delta = new WaveletDelta(author, hashedVersion, ops); ProtocolWaveletDelta serialized = CoreWaveletOperationSerializer.serialize(delta); WaveletDelta deserialized = CoreWaveletOperationSerializer.deserialize(serialized); assertEquals(hashedVersion.getVersion(), serialized.getHashedVersion().getVersion()); assertTrue(Arrays.equals(hashedVersion.getHistoryHash(), serialized.getHashedVersion().getHistoryHash().toByteArray())); assertDeepEquals(delta, deserialized); }
/** * Return the updated ProtocolHashedVersion for the given input. * * @param appliedDeltaBytes raw bytes of appliedDelta * @param appliedAt version delta was applied at, must match appliedDelta * @param operationsApplied number of operations applied, must match appliedDelta * @return new ProtocolHashedVersion */ public static ProtocolHashedVersion create(ByteString appliedDeltaBytes, ProtocolHashedVersion appliedAt, int operationsApplied) { // TODO(thorogood): verify appliedAt and operationsApplied against the raw bytes? return ProtocolHashedVersion.newBuilder() .setVersion(appliedAt.getVersion() + operationsApplied) .setHistoryHash(nextHash(appliedAt.getHistoryHash(), appliedDeltaBytes)) .build(); }