summaryrefslogtreecommitdiffstats
path: root/document
diff options
context:
space:
mode:
authorfreva <valerijf@yahoo-inc.com>2017-02-10 11:10:09 +0100
committerfreva <valerijf@yahoo-inc.com>2017-02-10 11:10:09 +0100
commit7f7b4e172e4ab301c46b8c7d2377f45685862221 (patch)
treeab771cf4cfbadd919bc3bdd55e23f75923699e66 /document
parent3ddf7f0ead9c91a061e266b017bc5ba5a716ae61 (diff)
Fixed DocumentUpdateJsonSerialized and it's test to the new format
Diffstat (limited to 'document')
-rw-r--r--document/src/main/java/com/yahoo/document/json/DocumentUpdateJsonSerializer.java22
-rw-r--r--document/src/test/java/com/yahoo/document/json/DocumentUpdateJsonSerializerTest.java25
2 files changed, 28 insertions, 19 deletions
diff --git a/document/src/main/java/com/yahoo/document/json/DocumentUpdateJsonSerializer.java b/document/src/main/java/com/yahoo/document/json/DocumentUpdateJsonSerializer.java
index c2d33d2bf80..dae9a96015d 100644
--- a/document/src/main/java/com/yahoo/document/json/DocumentUpdateJsonSerializer.java
+++ b/document/src/main/java/com/yahoo/document/json/DocumentUpdateJsonSerializer.java
@@ -25,6 +25,7 @@ import com.yahoo.document.datatypes.Struct;
import com.yahoo.document.datatypes.StructuredFieldValue;
import com.yahoo.document.datatypes.TensorFieldValue;
import com.yahoo.document.datatypes.WeightedSet;
+import com.yahoo.document.fieldpathupdate.AddFieldPathUpdate;
import com.yahoo.document.fieldpathupdate.AssignFieldPathUpdate;
import com.yahoo.document.fieldpathupdate.FieldPathUpdate;
import com.yahoo.document.fieldpathupdate.RemoveFieldPathUpdate;
@@ -110,12 +111,9 @@ public class DocumentUpdateJsonSerializer
if (! update.getFieldPathUpdates().isEmpty()) {
generator.writeArrayFieldStart("fieldpaths");
for (FieldPathUpdate up : update.getFieldPathUpdates()) {
- generator.writeStartObject();
- generator.writeStringField("fieldpath", up.getOriginalFieldPath());
- generator.writeStringField("operation", up.getUpdateType().name().toLowerCase());
- if (up.getOriginalWhereClause() != null) {
- generator.writeStringField("where", up.getOriginalWhereClause());
- }
+ generator.writeStartObject(); // Ends fieldpath operation object inside 'fieldpaths' array
+ generator.writeObjectFieldStart(up.getUpdateType().name().toLowerCase());
+ generator.writeObjectFieldStart(up.getOriginalFieldPath());
if (up instanceof AssignFieldPathUpdate) {
AssignFieldPathUpdate assignUp = (AssignFieldPathUpdate) up;
@@ -127,12 +125,22 @@ public class DocumentUpdateJsonSerializer
Field value = new Field("value");
assignUp.getNewValue().serialize(value, this);
}
+ } else if (up instanceof AddFieldPathUpdate) {
+ Field items = new Field("items");
+ ((AddFieldPathUpdate) up).getNewValues().serialize(items, this);
} else if (up instanceof RemoveFieldPathUpdate) {
} else {
throw new RuntimeException("Unsupported fieldpaths operation: " + up.getClass().getName());
}
- generator.writeEndObject();
+
+ generator.writeEndObject(); // Ends fieldpath object
+ if (up.getOriginalWhereClause() != null) {
+ generator.writeStringField("where", up.getOriginalWhereClause());
+ }
+
+ generator.writeEndObject(); // Ends operation object
+ generator.writeEndObject(); // Ends fieldpath operation object inside 'fieldpaths' array
}
generator.writeEndArray();
}
diff --git a/document/src/test/java/com/yahoo/document/json/DocumentUpdateJsonSerializerTest.java b/document/src/test/java/com/yahoo/document/json/DocumentUpdateJsonSerializerTest.java
index 055354757f1..17aaf625c0f 100644
--- a/document/src/test/java/com/yahoo/document/json/DocumentUpdateJsonSerializerTest.java
+++ b/document/src/test/java/com/yahoo/document/json/DocumentUpdateJsonSerializerTest.java
@@ -347,10 +347,11 @@ public class DocumentUpdateJsonSerializerTest {
" {",
" 'assign': {",
" 'int_field': {",
- " 'value': ['test', 'of', 'array', 'add'],",
+ " 'value': '1',",
" 'createmissingpath': false,",
" 'removeifzero': false",
- " }",
+ " },",
+ " 'where': 'int_field > 3'",
" }",
" },",
" {",
@@ -361,7 +362,7 @@ public class DocumentUpdateJsonSerializerTest {
" 'removeifzero': false",
" }",
" }",
- " },",
+ " }",
" ]",
"}"
));
@@ -374,15 +375,15 @@ public class DocumentUpdateJsonSerializerTest {
" 'update': 'DOCUMENT_ID',",
" 'fieldpaths': [",
" {",
- " 'int_field': {",
- " 'remove': {}",
+ " 'remove': {",
+ " 'int_field': {}",
" }",
" },",
" {",
- " 'string_field': {",
- " 'remove': {}",
+ " 'remove': {",
+ " 'string_field': {}",
" }",
- " },",
+ " }",
" ]",
"}"
));
@@ -395,15 +396,15 @@ public class DocumentUpdateJsonSerializerTest {
" 'update': 'DOCUMENT_ID',",
" 'fieldpaths': [",
" {",
- " 'int_field': {",
- " 'add': {",
+ " 'add': {",
+ " 'int_field': {",
" 'items': [123, 456, 789]",
" }",
" }",
" },",
" {",
- " 'string_field': {",
- " 'add': {",
+ " 'add': {",
+ " 'string_field': {",
" 'items': ['test', 'of', 'array', 'add']",
" }",
" }",