@Override public String getRequestBody(ApiMessage apiMessage) { ApiMessage body = apiMessage.getApiMessageRequestBody(); if (body == null) { return null; } GsonBuilder requestMarshaller = new GsonBuilder(); if (apiMessage.getFieldMask() != null) { requestMarshaller .registerTypeAdapter( body.getClass(), new FieldMaskedSerializer(apiMessage.getFieldMask())) .serializeNulls(); } return requestMarshaller.create().toJson(body); }
@Override public String getRequestBody(ApiMessage apiMessage) { ApiMessage body = apiMessage.getApiMessageRequestBody(); if (body == null) { return null; } GsonBuilder requestMarshaller = new GsonBuilder(); if (apiMessage.getFieldMask() != null) { requestMarshaller .registerTypeAdapter( body.getClass(), new FieldMaskedSerializer(apiMessage.getFieldMask())) .serializeNulls(); } return requestMarshaller.create().toJson(body); }
@Test public void testFieldMaskGenus() { List<String> fieldMask = Lists.newArrayList("genus"); JsonSerializer<ApiMessage> jsonSerializer = new FieldMaskedSerializer(fieldMask); Gson gson = new GsonBuilder().registerTypeAdapter(TreeMessage.class, jsonSerializer).create(); Truth.assertThat(gson.toJson(treeMessage)).isEqualTo("{\"genus\":\"Cedrus\"}"); }
@Test public void testFieldMaskBranches() { List<String> fieldMask = Lists.newArrayList("branchLengths"); JsonSerializer<ApiMessage> jsonSerializer = new FieldMaskedSerializer(fieldMask); Gson gson = new GsonBuilder().registerTypeAdapter(TreeMessage.class, jsonSerializer).create(); Truth.assertThat(gson.toJson(treeMessage)).isEqualTo("{\"branchLengths\":[2,0,6]}"); }
@Test public void testEmptyFieldMask() { JsonSerializer<ApiMessage> jsonSerializer = new FieldMaskedSerializer(null); Gson gson = new GsonBuilder().registerTypeAdapter(FakeApiMessage.class, jsonSerializer).create(); Truth.assertThat(gson.toJson(treeMessage)) .isEqualTo("{\"genus\":\"Cedrus\",\"branchLengths\":[2,0,6]}"); }