summaryrefslogtreecommitdiffstats
path: root/document
diff options
context:
space:
mode:
authorfreva <valerijf@yahoo-inc.com>2017-02-10 12:32:39 +0100
committerfreva <valerijf@yahoo-inc.com>2017-02-10 12:32:39 +0100
commitf0072df1b10f4636c14e996d3638466f9af32ef0 (patch)
treea15bf2edbf971e3776c1d8fd71676a8463a6d897 /document
parent61bfebfd4fff9c8c0fbdaa11cee30604b0ff5241 (diff)
Added verifyEndState for fieldpaths read
Diffstat (limited to 'document')
-rw-r--r--document/src/main/java/com/yahoo/document/json/JsonReader.java11
1 files changed, 6 insertions, 5 deletions
diff --git a/document/src/main/java/com/yahoo/document/json/JsonReader.java b/document/src/main/java/com/yahoo/document/json/JsonReader.java
index e8cade15254..98d9519b89f 100644
--- a/document/src/main/java/com/yahoo/document/json/JsonReader.java
+++ b/document/src/main/java/com/yahoo/document/json/JsonReader.java
@@ -29,7 +29,6 @@ import static com.yahoo.document.json.readers.AddRemoveCreator.createAdds;
import static com.yahoo.document.json.readers.AddRemoveCreator.createRemoves;
import static com.yahoo.document.json.readers.CompositeReader.populateComposite;
import static com.yahoo.document.json.readers.JsonParserHelpers.expectArrayStart;
-import static com.yahoo.document.json.readers.JsonParserHelpers.expectObjectEnd;
import static com.yahoo.document.json.readers.JsonParserHelpers.expectObjectStart;
import static com.yahoo.document.json.readers.MapReader.UPDATE_MATCH;
import static com.yahoo.document.json.readers.MapReader.createMapUpdate;
@@ -131,7 +130,7 @@ public class JsonReader {
case PUT:
documentOperation = new DocumentPut(new Document(documentType, documentParseInfo.documentId));
readPut(documentParseInfo.fieldsBuffer, (DocumentPut) documentOperation);
- verifyEndState(documentParseInfo.fieldsBuffer);
+ verifyEndState(documentParseInfo.fieldsBuffer, JsonToken.END_OBJECT);
break;
case REMOVE:
documentOperation = new DocumentRemove(documentParseInfo.documentId);
@@ -140,11 +139,12 @@ public class JsonReader {
documentOperation = new DocumentUpdate(documentType, documentParseInfo.documentId);
if (documentParseInfo.fieldsBuffer.size() > 0) {
readUpdate(documentParseInfo.fieldsBuffer, (DocumentUpdate) documentOperation);
- verifyEndState(documentParseInfo.fieldsBuffer);
+ verifyEndState(documentParseInfo.fieldsBuffer, JsonToken.END_OBJECT);
}
if (documentParseInfo.fieldpathsBuffer.size() > 0) {
VespaJsonDocumentReader vespaJsonDocumentReader = new VespaJsonDocumentReader(documentType, documentParseInfo);
vespaJsonDocumentReader.read((DocumentUpdate) documentOperation);
+ verifyEndState(documentParseInfo.fieldpathsBuffer, JsonToken.END_ARRAY);
}
break;
default:
@@ -183,9 +183,10 @@ public class JsonReader {
}
}
- private void verifyEndState(TokenBuffer buffer) {
+ private void verifyEndState(TokenBuffer buffer, JsonToken expectedFinalToken) {
+ Preconditions.checkState(buffer.currentToken() == expectedFinalToken,
+ "Expected end of JSON struct (%s), got %s", expectedFinalToken, buffer.currentToken());
Preconditions.checkState(buffer.nesting() == 0, "Nesting not zero at end of operation");
- expectObjectEnd(buffer.currentToken());
Preconditions.checkState(buffer.next() == null, "Dangling data at end of operation");
Preconditions.checkState(buffer.size() == 0, "Dangling data at end of operation");
}