@Override public DiffMatchPatchMessage fromJson(String json) { return JsonMapper.fromJson(json, DiffMatchPatchMessage.class); }
@Override public String asJson() { return JsonMapper.toJson(this); }
@Override public Document<String> documentFromJson(JsonNode json) { final JsonNode contentNode = json.get("content"); String content = null; if (contentNode != null && !contentNode.isNull()) { if (contentNode.isArray() || contentNode.isObject()) { content = JsonMapper.toString(contentNode); } else { content = contentNode.asText(); } } return new DefaultDocument<String>(json.get("id").asText(), content); }
@Override protected void channelRead0(final ChannelHandlerContext ctx, final WebSocketFrame frame) throws Exception { if (frame instanceof CloseWebSocketFrame) { logger.debug("Received closeFrame"); ctx.close(); return; } if (frame instanceof TextWebSocketFrame) { logger.info("TextWebSocketFrame: " + ((TextWebSocketFrame)frame).text()); final JsonNode json = JsonMapper.asJsonNode(((TextWebSocketFrame) frame).text()); logger.info("json: " + json); switch (MessageType.from(json.get("msgType").asText())) { case PATCH: final PatchMessage<S> serverPatchMessage = syncEngine.patchMessageFromJson(json.toString()); logger.info("Edits: " + serverPatchMessage); patch(serverPatchMessage); break; case UNKNOWN: unknownMessageType(ctx, json); break; } } else { ctx.fireChannelRead(frame); } }
@Override public PatchMessage<DiffMatchPatchEdit> patchMessageFromJson(String json) { return JsonMapper.fromJson(json, DiffMatchPatchMessage.class); }