@Override public void serialize(final DiffMatchPatchEdit edit, final JsonGenerator jgen, final SerializerProvider provider) throws IOException { jgen.writeStartObject(); jgen.writeStringField("msgType", "patch"); jgen.writeNumberField("clientVersion", edit.clientVersion()); jgen.writeNumberField("serverVersion", edit.serverVersion()); jgen.writeStringField("checksum", edit.checksum()); jgen.writeArrayFieldStart("diffs"); if (edit.diff() != null) { for (DiffMatchPatchDiff diff : edit.diff().diffs()) { jgen.writeStartObject(); jgen.writeStringField("operation", diff.operation().toString()); jgen.writeStringField("text", diff.text()); jgen.writeEndObject(); } } jgen.writeEndArray(); } }
jgen.writeNumberField("clientVersion", edit.clientVersion()); jgen.writeNumberField("serverVersion", edit.serverVersion()); jgen.writeStringField("checksum", edit.checksum());
@Override public ShadowDocument<String> patchShadow(final DiffMatchPatchEdit edit, final ShadowDocument<String> shadowDocument) { final LinkedList<Patch> patches = patchesFrom(edit); final ClientDocument<String> doc = shadowDocument.document(); //TODO: results also contains a boolean array. Not sure what we should do with it. final Object[] results = diffMatchPatch.patchApply(patches, doc.content()); final ClientDocument<String> patchedDocument = new DefaultClientDocument<String>(doc.id(), doc.clientId(), (String) results[0]); return new DefaultShadowDocument<String>(shadowDocument.serverVersion(), edit.clientVersion(), patchedDocument); }