DATAREST-885 - Support array values in JsonPatchPatchConverter.
Original pull request: #226.
This commit is contained in:
committed by
Oliver Gierke
parent
06c15d3b6b
commit
365e4376c3
@@ -34,6 +34,7 @@ import com.fasterxml.jackson.databind.node.ObjectNode;
|
||||
* @author Craig Walls
|
||||
* @author Oliver Gierke
|
||||
* @author Mathias Düsterhöft
|
||||
* @author Oliver Trosien
|
||||
*/
|
||||
@RequiredArgsConstructor
|
||||
public class JsonPatchPatchConverter implements PatchConverter<JsonNode> {
|
||||
@@ -136,10 +137,8 @@ public class JsonPatchPatchConverter implements PatchConverter<JsonNode> {
|
||||
return valueNode.asInt();
|
||||
} else if (valueNode.isLong()) {
|
||||
return valueNode.asLong();
|
||||
} else if (valueNode.isObject()) {
|
||||
} else if (valueNode.isObject() || (valueNode.isArray())) {
|
||||
return new JsonLateObjectEvaluator(mapper, valueNode);
|
||||
} else if (valueNode.isArray()) {
|
||||
// TODO: Convert valueNode to array
|
||||
}
|
||||
|
||||
return null;
|
||||
|
||||
@@ -19,6 +19,7 @@ import static org.junit.Assert.*;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
|
||||
import org.junit.Test;
|
||||
@@ -114,6 +115,17 @@ public class JsonPatchTests {
|
||||
assertEquals("F", todos.get(5).getDescription());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void patchArray() throws Exception {
|
||||
Todo todo = new Todo(1L, "F", false);
|
||||
|
||||
Patch patch = readJsonPatch("patch-array.json");
|
||||
assertEquals(1, patch.size());
|
||||
|
||||
Todo patchedTodo = patch.apply(todo, Todo.class);
|
||||
assertEquals(Arrays.asList("one","two","three"), patchedTodo.getItems());
|
||||
}
|
||||
|
||||
private Patch readJsonPatch(String jsonPatchFile) throws IOException, JsonParseException, JsonMappingException {
|
||||
|
||||
ClassPathResource resource = new ClassPathResource(jsonPatchFile, getClass());
|
||||
|
||||
@@ -16,6 +16,9 @@
|
||||
|
||||
package org.springframework.data.rest.webmvc.json.patch;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
@@ -33,6 +36,7 @@ class Todo {
|
||||
private String description;
|
||||
private boolean complete;
|
||||
private TodoType type = new TodoType();
|
||||
private List<String> items = new ArrayList<String>();
|
||||
|
||||
public Todo(Long id, String description, boolean complete) {
|
||||
|
||||
|
||||
@@ -0,0 +1,3 @@
|
||||
[
|
||||
{"op":"replace", "path":"/items", "value": ["one","two","three"]}
|
||||
]
|
||||
Reference in New Issue
Block a user