diff options
author | Haakon Dybdahl <dybdahl@yahoo-inc.com> | 2017-02-10 15:23:53 +0100 |
---|---|---|
committer | Haakon Dybdahl <dybdahl@yahoo-inc.com> | 2017-02-10 15:23:53 +0100 |
commit | 2615bc676a05d61169edd55654d3936e1ddbaa22 (patch) | |
tree | 02d26b5e57bb8bf778f42c98b31a7a1b6ac71f3b /document | |
parent | 82cf0a369f440319871be6768ce1ca92d7e9e3ba (diff) |
Move logic around.
Diffstat (limited to 'document')
-rw-r--r-- | document/src/main/java/com/yahoo/document/json/JsonReader.java | 137 | ||||
-rw-r--r-- | document/src/main/java/com/yahoo/document/json/readers/VespaJsonDocumentReader.java (renamed from document/src/main/java/com/yahoo/document/json/VespaJsonDocumentReader.java) | 130 | ||||
-rw-r--r-- | document/src/test/java/com/yahoo/document/json/JsonReaderTestCase.java | 43 | ||||
-rw-r--r-- | document/src/test/java/com/yahoo/document/json/JsonWriterTestCase.java | 3 |
4 files changed, 155 insertions, 158 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 ab8a4ba917d..0d9c9544501 100644 --- a/document/src/main/java/com/yahoo/document/json/JsonReader.java +++ b/document/src/main/java/com/yahoo/document/json/JsonReader.java @@ -5,34 +5,21 @@ import com.fasterxml.jackson.core.JsonFactory; import com.fasterxml.jackson.core.JsonParser; import com.fasterxml.jackson.core.JsonToken; import com.google.common.annotations.Beta; -import com.google.common.base.Preconditions; -import com.yahoo.document.Document; import com.yahoo.document.DocumentId; import com.yahoo.document.DocumentOperation; -import com.yahoo.document.DocumentPut; -import com.yahoo.document.DocumentRemove; import com.yahoo.document.DocumentType; import com.yahoo.document.DocumentTypeManager; -import com.yahoo.document.DocumentUpdate; -import com.yahoo.document.Field; import com.yahoo.document.TestAndSetCondition; import com.yahoo.document.json.document.DocumentParser; import com.yahoo.document.json.readers.DocumentParseInfo; -import com.yahoo.document.update.FieldUpdate; +import com.yahoo.document.json.readers.VespaJsonDocumentReader; import java.io.IOException; import java.io.InputStream; import java.util.Optional; import static com.yahoo.document.json.JsonReader.ReaderState.END_OF_FEED; -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.expectObjectStart; -import static com.yahoo.document.json.readers.MapReader.UPDATE_MATCH; -import static com.yahoo.document.json.readers.MapReader.createMapUpdate; -import static com.yahoo.document.json.readers.SingleValueReader.readSingleUpdate; /** * Initialize Vespa documents/updates/removes from an InputStream containing a @@ -49,8 +36,6 @@ public class JsonReader { return documentParser.parse(Optional.empty()); } - private static final String UPDATE_REMOVE = "remove"; - private static final String UPDATE_ADD = "add"; private final JsonParser parser; private final DocumentTypeManager typeManager; @@ -88,7 +73,9 @@ public class JsonReader { throw new RuntimeException(e); } documentParseInfo.operationType = operationType; - DocumentOperation operation = createDocumentOperation(documentParseInfo); + VespaJsonDocumentReader vespaJsonDocumentReader = new VespaJsonDocumentReader( + getDocumentTypeFromString(documentParseInfo.documentId.getDocType(), typeManager), documentParseInfo); + DocumentOperation operation = vespaJsonDocumentReader.createDocumentOperation(); operation.setCondition(TestAndSetCondition.fromConditionString(documentParseInfo.condition)); return operation; } @@ -117,122 +104,14 @@ public class JsonReader { state = END_OF_FEED; return null; } - DocumentOperation operation = createDocumentOperation(documentParseInfo.get()); + VespaJsonDocumentReader vespaJsonDocumentReader = new VespaJsonDocumentReader( + getDocumentTypeFromString(documentParseInfo.get().documentId.getDocType(), typeManager), + documentParseInfo.get()); + DocumentOperation operation = vespaJsonDocumentReader.createDocumentOperation(); operation.setCondition(TestAndSetCondition.fromConditionString(documentParseInfo.get().condition)); return operation; } - private DocumentOperation createDocumentOperation(DocumentParseInfo documentParseInfo) { - DocumentType documentType = getDocumentTypeFromString(documentParseInfo.documentId.getDocType(), typeManager); - final DocumentOperation documentOperation; - try { - switch (documentParseInfo.operationType) { - case PUT: - documentOperation = new DocumentPut(new Document(documentType, documentParseInfo.documentId)); - readPut(documentParseInfo.fieldsBuffer, (DocumentPut) documentOperation); - verifyEndState(documentParseInfo.fieldsBuffer, JsonToken.END_OBJECT); - break; - case REMOVE: - documentOperation = new DocumentRemove(documentParseInfo.documentId); - break; - case UPDATE: - documentOperation = new DocumentUpdate(documentType, documentParseInfo.documentId); - if (documentParseInfo.fieldsBuffer.size() == 0 && documentParseInfo.fieldpathsBuffer.size() == 0) { - throw new IllegalArgumentException("Either 'fields' or 'fieldpaths' must be set"); - } - - if (documentParseInfo.fieldsBuffer.size() > 0) { - readUpdate(documentParseInfo.fieldsBuffer, (DocumentUpdate) documentOperation); - 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: - throw new IllegalStateException("Implementation out of sync with itself. This is a bug."); - } - } catch (JsonReaderException e) { - throw JsonReaderException.addDocId(e, documentParseInfo.documentId); - } - if (documentParseInfo.create.isPresent()) { - if (!(documentOperation instanceof DocumentUpdate)) { - throw new RuntimeException("Could not set create flag on non update operation."); - } - DocumentUpdate update = (DocumentUpdate) documentOperation; - update.setCreateIfNonExistent(documentParseInfo.create.get()); - } - return documentOperation; - } - - // Exposed for unit testing... - void readUpdate(TokenBuffer buffer, DocumentUpdate next) { - if (buffer.size() == 0) { - buffer.bufferObject(nextToken(parser), parser); - } - populateUpdateFromBuffer(buffer, next); - } - - // Exposed for unit testing... - void readPut(TokenBuffer buffer, DocumentPut put) { - if (buffer.size() == 0) { - buffer.bufferObject(nextToken(parser), parser); - } - try { - populateComposite(buffer, put.getDocument()); - } catch (JsonReaderException e) { - throw JsonReaderException.addDocId(e, put.getId()); - } - } - - 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"); - Preconditions.checkState(buffer.next() == null, "Dangling data at end of operation"); - Preconditions.checkState(buffer.size() == 0, "Dangling data at end of operation"); - } - - private static void populateUpdateFromBuffer(TokenBuffer buffer, DocumentUpdate update) { - expectObjectStart(buffer.currentToken()); - int localNesting = buffer.nesting(); - JsonToken t = buffer.next(); - - while (localNesting <= buffer.nesting()) { - expectObjectStart(t); - String fieldName = buffer.currentName(); - Field field = update.getType().getField(fieldName); - addFieldUpdates(buffer, update, field); - t = buffer.next(); - } - } - - private static void addFieldUpdates(TokenBuffer buffer, DocumentUpdate update, Field field) { - int localNesting = buffer.nesting(); - FieldUpdate fieldUpdate = FieldUpdate.create(field); - - buffer.next(); - while (localNesting <= buffer.nesting()) { - switch (buffer.currentName()) { - case UPDATE_REMOVE: - createRemoves(buffer, field, fieldUpdate); - break; - case UPDATE_ADD: - createAdds(buffer, field, fieldUpdate); - break; - case UPDATE_MATCH: - fieldUpdate.addValueUpdate(createMapUpdate(buffer, field)); - break; - default: - String action = buffer.currentName(); - fieldUpdate.addValueUpdate(readSingleUpdate(buffer, field.getDataType(), action)); - } - buffer.next(); - } - update.addFieldUpdate(fieldUpdate); - } public DocumentType readDocumentType(DocumentId docId) { return getDocumentTypeFromString(docId.getDocType(), typeManager); diff --git a/document/src/main/java/com/yahoo/document/json/VespaJsonDocumentReader.java b/document/src/main/java/com/yahoo/document/json/readers/VespaJsonDocumentReader.java index 511fd894043..a8e1934bed1 100644 --- a/document/src/main/java/com/yahoo/document/json/VespaJsonDocumentReader.java +++ b/document/src/main/java/com/yahoo/document/json/readers/VespaJsonDocumentReader.java @@ -1,10 +1,15 @@ -package com.yahoo.document.json; +package com.yahoo.document.json.readers; import com.fasterxml.jackson.core.JsonToken; -import com.yahoo.document.ArrayDataType; +import com.google.common.base.Preconditions; import com.yahoo.document.DataType; +import com.yahoo.document.Document; +import com.yahoo.document.DocumentOperation; +import com.yahoo.document.DocumentPut; +import com.yahoo.document.DocumentRemove; import com.yahoo.document.DocumentType; import com.yahoo.document.DocumentUpdate; +import com.yahoo.document.Field; import com.yahoo.document.NumericDataType; import com.yahoo.document.datatypes.Array; import com.yahoo.document.datatypes.FieldValue; @@ -12,14 +17,21 @@ import com.yahoo.document.fieldpathupdate.AddFieldPathUpdate; import com.yahoo.document.fieldpathupdate.AssignFieldPathUpdate; import com.yahoo.document.fieldpathupdate.FieldPathUpdate; import com.yahoo.document.fieldpathupdate.RemoveFieldPathUpdate; -import com.yahoo.document.json.readers.CompositeReader; -import com.yahoo.document.json.readers.DocumentParseInfo; +import com.yahoo.document.json.JsonReaderException; +import com.yahoo.document.json.TokenBuffer; import com.yahoo.document.select.parser.ParseException; +import com.yahoo.document.update.FieldUpdate; +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.expectObjectEnd; import static com.yahoo.document.json.readers.JsonParserHelpers.expectObjectStart; import static com.yahoo.document.json.readers.JsonParserHelpers.expectArrayEnd; import static com.yahoo.document.json.readers.JsonParserHelpers.expectArrayStart; +import static com.yahoo.document.json.readers.MapReader.UPDATE_MATCH; +import static com.yahoo.document.json.readers.MapReader.createMapUpdate; +import static com.yahoo.document.json.readers.SingleValueReader.readSingleUpdate; /** * @author valerijf @@ -28,13 +40,117 @@ public class VespaJsonDocumentReader { private final DocumentType documentType; private final DocumentParseInfo documentParseInfo; - VespaJsonDocumentReader(DocumentType documentType, DocumentParseInfo documentParseInfo) { + private static final String UPDATE_REMOVE = "remove"; + private static final String UPDATE_ADD = "add"; + + public VespaJsonDocumentReader(DocumentType documentType, DocumentParseInfo documentParseInfo) { this.documentType = documentType; this.documentParseInfo = documentParseInfo; } - public void read(DocumentUpdate update) { - parseFieldpathsBuffer(update, documentParseInfo.fieldpathsBuffer); + public DocumentOperation createDocumentOperation() { + final DocumentOperation documentOperation; + try { + switch (documentParseInfo.operationType) { + case PUT: + documentOperation = new DocumentPut(new Document(documentType, documentParseInfo.documentId)); + readPut(documentParseInfo.fieldsBuffer, (DocumentPut) documentOperation); + verifyEndState(documentParseInfo.fieldsBuffer, JsonToken.END_OBJECT); + break; + case REMOVE: + documentOperation = new DocumentRemove(documentParseInfo.documentId); + break; + case UPDATE: + documentOperation = new DocumentUpdate(documentType, documentParseInfo.documentId); + if (documentParseInfo.fieldsBuffer.size() == 0 && documentParseInfo.fieldpathsBuffer.size() == 0) { + throw new IllegalArgumentException("Either 'fields' or 'fieldpaths' must be set"); + } + + if (documentParseInfo.fieldsBuffer.size() > 0) { + readUpdate(documentParseInfo.fieldsBuffer, (DocumentUpdate) documentOperation); + verifyEndState(documentParseInfo.fieldsBuffer, JsonToken.END_OBJECT); + } + if (documentParseInfo.fieldpathsBuffer.size() > 0) { + VespaJsonDocumentReader vespaJsonDocumentReader = new VespaJsonDocumentReader(documentType, documentParseInfo); + parseFieldpathsBuffer((DocumentUpdate) documentOperation, documentParseInfo.fieldpathsBuffer); + verifyEndState(documentParseInfo.fieldpathsBuffer, JsonToken.END_ARRAY); + } + break; + default: + throw new IllegalStateException("Implementation out of sync with itself. This is a bug."); + } + } catch (JsonReaderException e) { + throw JsonReaderException.addDocId(e, documentParseInfo.documentId); + } + if (documentParseInfo.create.isPresent()) { + if (!(documentOperation instanceof DocumentUpdate)) { + throw new RuntimeException("Could not set create flag on non update operation."); + } + DocumentUpdate update = (DocumentUpdate) documentOperation; + update.setCreateIfNonExistent(documentParseInfo.create.get()); + } + return documentOperation; + } + + // Exposed for unit testing... + public static void readUpdate(TokenBuffer buffer, DocumentUpdate next) { + populateUpdateFromBuffer(buffer, next); + } + + // Exposed for unit testing... + public static void readPut(TokenBuffer buffer, DocumentPut put) { + try { + populateComposite(buffer, put.getDocument()); + } catch (JsonReaderException e) { + throw JsonReaderException.addDocId(e, put.getId()); + } + } + + private static 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"); + Preconditions.checkState(buffer.next() == null, "Dangling data at end of operation"); + Preconditions.checkState(buffer.size() == 0, "Dangling data at end of operation"); + } + + private static void populateUpdateFromBuffer(TokenBuffer buffer, DocumentUpdate update) { + expectObjectStart(buffer.currentToken()); + int localNesting = buffer.nesting(); + JsonToken t = buffer.next(); + + while (localNesting <= buffer.nesting()) { + expectObjectStart(t); + String fieldName = buffer.currentName(); + Field field = update.getType().getField(fieldName); + addFieldUpdates(buffer, update, field); + t = buffer.next(); + } + } + + private static void addFieldUpdates(TokenBuffer buffer, DocumentUpdate update, Field field) { + int localNesting = buffer.nesting(); + FieldUpdate fieldUpdate = FieldUpdate.create(field); + + buffer.next(); + while (localNesting <= buffer.nesting()) { + switch (buffer.currentName()) { + case UPDATE_REMOVE: + createRemoves(buffer, field, fieldUpdate); + break; + case UPDATE_ADD: + createAdds(buffer, field, fieldUpdate); + break; + case UPDATE_MATCH: + fieldUpdate.addValueUpdate(createMapUpdate(buffer, field)); + break; + default: + String action = buffer.currentName(); + fieldUpdate.addValueUpdate(readSingleUpdate(buffer, field.getDataType(), action)); + } + buffer.next(); + } + update.addFieldUpdate(fieldUpdate); } private void parseFieldpathsBuffer(DocumentUpdate update, TokenBuffer buffer) { diff --git a/document/src/test/java/com/yahoo/document/json/JsonReaderTestCase.java b/document/src/test/java/com/yahoo/document/json/JsonReaderTestCase.java index 756e3fe3aa9..3ad6f270bff 100644 --- a/document/src/test/java/com/yahoo/document/json/JsonReaderTestCase.java +++ b/document/src/test/java/com/yahoo/document/json/JsonReaderTestCase.java @@ -32,6 +32,7 @@ import com.yahoo.document.datatypes.TensorFieldValue; import com.yahoo.document.datatypes.WeightedSet; import com.yahoo.document.json.document.DocumentParser; import com.yahoo.document.json.readers.DocumentParseInfo; +import com.yahoo.document.json.readers.VespaJsonDocumentReader; import com.yahoo.document.update.AddValueUpdate; import com.yahoo.document.update.ArithmeticValueUpdate; import com.yahoo.document.update.ArithmeticValueUpdate.Operator; @@ -216,7 +217,7 @@ public class JsonReaderTestCase { DocumentParseInfo parseInfo = r.parseDocument().get(); DocumentType docType = r.readDocumentType(parseInfo.documentId); DocumentPut put = new DocumentPut(new Document(docType, parseInfo.documentId)); - r.readPut(parseInfo.fieldsBuffer, put); + VespaJsonDocumentReader.readPut(parseInfo.fieldsBuffer, put); smokeTestDoc(put.getDocument()); } @@ -232,7 +233,7 @@ public class JsonReaderTestCase { DocumentParseInfo parseInfo = r.parseDocument().get(); DocumentType docType = r.readDocumentType(parseInfo.documentId); DocumentPut put = new DocumentPut(new Document(docType, parseInfo.documentId)); - r.readPut(parseInfo.fieldsBuffer, put); + VespaJsonDocumentReader.readPut(parseInfo.fieldsBuffer, put); smokeTestDoc(put.getDocument()); } @@ -246,7 +247,7 @@ public class JsonReaderTestCase { DocumentParseInfo parseInfo = r.parseDocument().get(); DocumentType docType = r.readDocumentType(parseInfo.documentId); DocumentPut put = new DocumentPut(new Document(docType, parseInfo.documentId)); - r.readPut(parseInfo.fieldsBuffer, put); + VespaJsonDocumentReader.readPut(parseInfo.fieldsBuffer, put); assertEquals("id:unittest:smoke::whee", parseInfo.documentId.toString()); } @@ -262,7 +263,7 @@ public class JsonReaderTestCase { DocumentParseInfo parseInfo = r.parseDocument().get(); DocumentType docType = r.readDocumentType(parseInfo.documentId); DocumentPut put = new DocumentPut(new Document(docType, parseInfo.documentId)); - r.readPut(parseInfo.fieldsBuffer, put); + VespaJsonDocumentReader.readPut(parseInfo.fieldsBuffer, put); Document doc = put.getDocument(); FieldValue f = doc.getFieldValue(doc.getField("skuggsjaa")); assertSame(Struct.class, f.getClass()); @@ -282,7 +283,7 @@ public class JsonReaderTestCase { DocumentParseInfo parseInfo = r.parseDocument().get(); DocumentType docType = r.readDocumentType(parseInfo.documentId); DocumentUpdate doc = new DocumentUpdate(docType, parseInfo.documentId); - r.readUpdate(parseInfo.fieldsBuffer, doc); + VespaJsonDocumentReader.readUpdate(parseInfo.fieldsBuffer, doc); checkSimpleArrayAdd(doc); } @@ -298,7 +299,7 @@ public class JsonReaderTestCase { DocumentParseInfo parseInfo = r.parseDocument().get(); DocumentType docType = r.readDocumentType(parseInfo.documentId); DocumentUpdate doc = new DocumentUpdate(docType, parseInfo.documentId); - r.readUpdate(parseInfo.fieldsBuffer, doc); + VespaJsonDocumentReader.readUpdate(parseInfo.fieldsBuffer, doc); Map<String, Integer> weights = new HashMap<>(); FieldUpdate x = doc.getFieldUpdate("actualset"); for (ValueUpdate<?> v : x.getValueUpdates()) { @@ -328,7 +329,7 @@ public class JsonReaderTestCase { DocumentType docType = r.readDocumentType(parseInfo.documentId); DocumentUpdate doc = new DocumentUpdate(docType, parseInfo.documentId); - r.readUpdate(parseInfo.fieldsBuffer, doc); + VespaJsonDocumentReader.readUpdate(parseInfo.fieldsBuffer, doc); Map<String, Tuple2<Number, String>> matches = new HashMap<>(); FieldUpdate x = doc.getFieldUpdate("actualset"); for (ValueUpdate<?> v : x.getValueUpdates()) { @@ -370,7 +371,7 @@ public class JsonReaderTestCase { DocumentType docType = r.readDocumentType(parseInfo.documentId); DocumentUpdate doc = new DocumentUpdate(docType, parseInfo.documentId); - r.readUpdate(parseInfo.fieldsBuffer, doc); + VespaJsonDocumentReader.readUpdate(parseInfo.fieldsBuffer, doc); Map<String, Tuple2<Number, Operator>> matches = new HashMap<>(); FieldUpdate x = doc.getFieldUpdate("actualset"); for (ValueUpdate v : x.getValueUpdates()) { @@ -404,7 +405,7 @@ public class JsonReaderTestCase { DocumentType docType = r.readDocumentType(parseInfo.documentId); DocumentUpdate doc = new DocumentUpdate(docType, parseInfo.documentId); - r.readUpdate(parseInfo.fieldsBuffer, doc); + VespaJsonDocumentReader.readUpdate(parseInfo.fieldsBuffer, doc); Map<Number, String> matches = new HashMap<>(); FieldUpdate x = doc.getFieldUpdate("actualarray"); for (ValueUpdate v : x.getValueUpdates()) { @@ -441,7 +442,7 @@ public class JsonReaderTestCase { DocumentParseInfo parseInfo = r.parseDocument().get(); DocumentType docType = r.readDocumentType(parseInfo.documentId); DocumentPut put = new DocumentPut(new Document(docType, parseInfo.documentId)); - r.readPut(parseInfo.fieldsBuffer, put); + VespaJsonDocumentReader.readPut(parseInfo.fieldsBuffer, put); Document doc = put.getDocument(); FieldValue f = doc.getFieldValue(doc.getField("actualset")); assertSame(WeightedSet.class, f.getClass()); @@ -462,7 +463,7 @@ public class JsonReaderTestCase { DocumentParseInfo parseInfo = r.parseDocument().get(); DocumentType docType = r.readDocumentType(parseInfo.documentId); DocumentPut put = new DocumentPut(new Document(docType, parseInfo.documentId)); - r.readPut(parseInfo.fieldsBuffer, put); + VespaJsonDocumentReader.readPut(parseInfo.fieldsBuffer, put); Document doc = put.getDocument(); FieldValue f = doc.getFieldValue(doc.getField("actualarray")); assertSame(Array.class, f.getClass()); @@ -483,7 +484,7 @@ public class JsonReaderTestCase { DocumentParseInfo parseInfo = r.parseDocument().get(); DocumentType docType = r.readDocumentType(parseInfo.documentId); DocumentPut put = new DocumentPut(new Document(docType, parseInfo.documentId)); - r.readPut(parseInfo.fieldsBuffer, put); + VespaJsonDocumentReader.readPut(parseInfo.fieldsBuffer, put); Document doc = put.getDocument(); FieldValue f = doc.getFieldValue(doc.getField("actualmap")); assertSame(MapFieldValue.class, f.getClass()); @@ -502,7 +503,7 @@ public class JsonReaderTestCase { DocumentParseInfo parseInfo = r.parseDocument().get(); DocumentType docType = r.readDocumentType(parseInfo.documentId); DocumentPut put = new DocumentPut(new Document(docType, parseInfo.documentId)); - r.readPut(parseInfo.fieldsBuffer, put); + VespaJsonDocumentReader.readPut(parseInfo.fieldsBuffer, put); Document doc = put.getDocument(); FieldValue f = doc.getFieldValue(doc.getField("singlepos")); assertSame(Struct.class, f.getClass()); @@ -519,7 +520,7 @@ public class JsonReaderTestCase { DocumentParseInfo parseInfo = r.parseDocument().get(); DocumentType docType = r.readDocumentType(parseInfo.documentId); DocumentPut put = new DocumentPut(new Document(docType, parseInfo.documentId)); - r.readPut(parseInfo.fieldsBuffer, put); + VespaJsonDocumentReader.readPut(parseInfo.fieldsBuffer, put); Document doc = put.getDocument(); FieldValue f = doc.getFieldValue(doc.getField("singlepos")); assertSame(Struct.class, f.getClass()); @@ -540,7 +541,7 @@ public class JsonReaderTestCase { DocumentParseInfo parseInfo = r.parseDocument().get(); DocumentType docType = r.readDocumentType(parseInfo.documentId); DocumentPut put = new DocumentPut(new Document(docType, parseInfo.documentId)); - r.readPut(parseInfo.fieldsBuffer, put); + VespaJsonDocumentReader.readPut(parseInfo.fieldsBuffer, put); Document doc = put.getDocument(); FieldValue f = doc.getFieldValue(doc.getField("actualraw")); assertSame(Raw.class, f.getClass()); @@ -560,7 +561,7 @@ public class JsonReaderTestCase { DocumentParseInfo parseInfo = r.parseDocument().get(); DocumentType docType = r.readDocumentType(parseInfo.documentId); DocumentPut put = new DocumentPut(new Document(docType, parseInfo.documentId)); - r.readPut(parseInfo.fieldsBuffer, put); + VespaJsonDocumentReader.readPut(parseInfo.fieldsBuffer, put); Document doc = put.getDocument(); FieldValue f = doc.getFieldValue("actualMapStringToArrayOfInt"); assertSame(MapFieldValue.class, f.getClass()); @@ -582,7 +583,7 @@ public class JsonReaderTestCase { DocumentParseInfo parseInfo = r.parseDocument().get(); DocumentType docType = r.readDocumentType(parseInfo.documentId); DocumentUpdate doc = new DocumentUpdate(docType, parseInfo.documentId); - r.readUpdate(parseInfo.fieldsBuffer, doc); + VespaJsonDocumentReader.readUpdate(parseInfo.fieldsBuffer, doc); FieldUpdate f = doc.getFieldUpdate("something"); assertEquals(1, f.size()); AssignValueUpdate a = (AssignValueUpdate) f.getValueUpdate(0); @@ -601,7 +602,7 @@ public class JsonReaderTestCase { DocumentParseInfo parseInfo = r.parseDocument().get(); DocumentType docType = r.readDocumentType(parseInfo.documentId); DocumentUpdate doc = new DocumentUpdate(docType, parseInfo.documentId); - r.readUpdate(parseInfo.fieldsBuffer, doc); + VespaJsonDocumentReader.readUpdate(parseInfo.fieldsBuffer, doc); FieldUpdate f = doc.getFieldUpdate("actualMapStringToArrayOfInt"); assertEquals(1, f.size()); AssignValueUpdate assign = (AssignValueUpdate) f.getValueUpdate(0); @@ -625,7 +626,7 @@ public class JsonReaderTestCase { DocumentParseInfo parseInfo = r.parseDocument().get(); DocumentType docType = r.readDocumentType(parseInfo.documentId); DocumentUpdate doc = new DocumentUpdate(docType, parseInfo.documentId); - r.readUpdate(parseInfo.fieldsBuffer, doc); + VespaJsonDocumentReader.readUpdate(parseInfo.fieldsBuffer, doc); FieldUpdate x = doc.getFieldUpdate("actualset"); assertEquals(1, x.size()); AssignValueUpdate assign = (AssignValueUpdate) x.getValueUpdate(0); @@ -828,7 +829,7 @@ public class JsonReaderTestCase { DocumentPut put = new DocumentPut(new Document(docType, parseInfo.documentId)); exception.expect(NullPointerException.class); exception.expectMessage("Could not get field \"smething\" in the structure of type \"smoke\"."); - r.readPut(parseInfo.fieldsBuffer, put); + VespaJsonDocumentReader.readPut(parseInfo.fieldsBuffer, put); } @Test @@ -855,7 +856,7 @@ public class JsonReaderTestCase { DocumentParseInfo parseInfo = r.parseDocument().get(); DocumentType docType = r.readDocumentType(parseInfo.documentId); DocumentPut put = new DocumentPut(new Document(docType, parseInfo.documentId)); - r.readPut(parseInfo.fieldsBuffer, put); + VespaJsonDocumentReader.readPut(parseInfo.fieldsBuffer, put); smokeTestDoc(put.getDocument()); } diff --git a/document/src/test/java/com/yahoo/document/json/JsonWriterTestCase.java b/document/src/test/java/com/yahoo/document/json/JsonWriterTestCase.java index 76d18e71a51..4928f1be374 100644 --- a/document/src/test/java/com/yahoo/document/json/JsonWriterTestCase.java +++ b/document/src/test/java/com/yahoo/document/json/JsonWriterTestCase.java @@ -23,6 +23,7 @@ import com.yahoo.document.WeightedSetDataType; import com.yahoo.document.datatypes.ReferenceFieldValue; import com.yahoo.document.datatypes.TensorFieldValue; import com.yahoo.document.json.readers.DocumentParseInfo; +import com.yahoo.document.json.readers.VespaJsonDocumentReader; import com.yahoo.tensor.TensorType; import com.yahoo.text.Utf8; import org.apache.commons.codec.binary.Base64; @@ -299,7 +300,7 @@ public class JsonWriterTestCase { DocumentParseInfo raw = r.parseDocument().get(); DocumentType docType = r.readDocumentType(raw.documentId); DocumentPut put = new DocumentPut(new Document(docType, raw.documentId)); - r.readPut(raw.fieldsBuffer, put); + VespaJsonDocumentReader.readPut(raw.fieldsBuffer, put); return put.getDocument(); } |