private void write(RawJsonWriter writer, LazyJson value) { String json = value.getJson(); json = json.substring(1, json.length() - 1); RawJsonWriter customWriter = writer; customWriter.writeRawString(json); }
@Override protected void write(JsonWriter out, LazyJson value, TypeAdapter<JsonElement> elementAdapter, TypeAdapter<LazyJson> delegate) throws IOException { if (value == null || value.getJson() == null) { out.nullValue(); return; } String json = value.getJson(); // This is done to avoid json serialize/deserialize to JsonObject since we already have the json as a String. // Could not find any better GSON API. JsonWriter wont let me write strings without escaping then. CustomJsonWriter customWriter = (CustomJsonWriter) out; begin(customWriter, value); customWriter.write(json.substring(1, json.length() - 1)); // Remove { and } end(customWriter, value); }
@Override public void serialize(LazyJson value, ObjectWriter writer, Context ctx) throws Exception { if (value == null || value.getJson() == null) { writer.writeNull(); return; } begin(value, writer); write((RawJsonWriter) writer, value); end(value, writer); }
private Object getFieldValue(FieldModel fieldModel, ObjectHolder objectHolder) { Object value = fieldModel.getValue(objectHolder.getObject()); if (value == null) { return null; } if (fieldModel.isEnum(value)) { return value.toString(); } if (fieldModel.isSaveAsJson()) { return JsonUtils.to(value); } if (fieldModel.isSaveAsLazyJson()) { String json = ((LazyJson) value).getJson(); if (json == null) { return null; } return json; } if (fieldModel.isIdRef()) { IdRef<?> idRef = (IdRef<?>) value; return idRef.getUri(); } if (fieldModel.isSaveAsText()) { return value.toString(); } if (fieldModel.isListOfIds()) { return convertToListOfUris((List<IdRef<?>>) value); } return value; }
private Object getFieldValue(FieldModel fieldModel, ObjectHolder objectHolder) { Object value = fieldModel.getValue(objectHolder.getObject()); if (value == null) { return null; } if (fieldModel.isEnum(value)) { return value.toString(); } if (fieldModel.isSaveAsJson()) { return new Text(JsonUtils.to(value)); } if (fieldModel.isSaveAsLazyJson()) { String json = ((LazyJson) value).getJson(); if (json == null) { return null; } return new Text(json); } if (fieldModel.isIdRef()) { IdRef<?> idRef = (IdRef<?>) value; return idRef.getUri(); } if (fieldModel.isSaveAsText()) { return new Text(value.toString()); } if (fieldModel.isListOfIds()) { return convertToListOfUris((List<IdRef<?>>) value); } return value; }
@Test public void testGetCacheChangeJson() { Pojo pojo = new Pojo("xpto"); LazyJson<Pojo> lazyJson = LazyJson.create(pojo); lazyJson.get().setStringValue("otpx"); assertEquals(JsonUtils.to(new Pojo("otpx")), lazyJson.getJson()); }