*
* @param waveletOp wavelet operation to serialize
* @return serialized protocol buffer wavelet operation
*/
public static ProtocolWaveletOperation serialize(WaveletOperation waveletOp) {
ProtocolWaveletOperation protobufOp = ProtocolWaveletOperationJsoImpl.create();
if (waveletOp instanceof NoOp) {
protobufOp.setNoOp(true);
} else if (waveletOp instanceof AddParticipant) {
protobufOp.setAddParticipant(((AddParticipant) waveletOp).getParticipantId().getAddress());
} else if (waveletOp instanceof RemoveParticipant) {
protobufOp.setRemoveParticipant(((RemoveParticipant) waveletOp).getParticipantId()
.getAddress());
} else if (waveletOp instanceof WaveletBlipOperation) {
ProtocolWaveletOperation.MutateDocument mutation =
ProtocolWaveletOperationJsoImpl.MutateDocumentJsoImpl.create();
mutation.setDocumentId(((WaveletBlipOperation) waveletOp).getBlipId());
mutation.setDocumentOperation(serialize(((WaveletBlipOperation) waveletOp).getBlipOp()));
protobufOp.setMutateDocument(mutation);
} else {
throw new IllegalArgumentException("Unsupported operation type: " + waveletOp);
}
return protobufOp;