use of com.yahoo.document.json.readers.DocumentParseInfo in project vespa by vespa-engine.
the class JsonReader method next.
public DocumentOperation next() {
switch(state) {
case AT_START:
JsonToken t = nextToken(parser);
expectArrayStart(t);
state = ReaderState.READING;
break;
case END_OF_FEED:
return null;
case READING:
break;
}
Optional<DocumentParseInfo> documentParseInfo;
try {
documentParseInfo = parseDocument();
} catch (IOException r) {
// Jackson is not able to recover from structural parse errors
state = END_OF_FEED;
throw new RuntimeException(r);
}
if (!documentParseInfo.isPresent()) {
state = END_OF_FEED;
return null;
}
VespaJsonDocumentReader vespaJsonDocumentReader = new VespaJsonDocumentReader();
DocumentOperation operation = vespaJsonDocumentReader.createDocumentOperation(getDocumentTypeFromString(documentParseInfo.get().documentId.getDocType(), typeManager), documentParseInfo.get());
operation.setCondition(TestAndSetCondition.fromConditionString(documentParseInfo.get().condition));
return operation;
}
use of com.yahoo.document.json.readers.DocumentParseInfo in project vespa by vespa-engine.
the class DocumentParser method parse.
public Optional<DocumentParseInfo> parse(Optional<DocumentId> documentIdArg) throws IOException {
indentLevel = 0;
DocumentParseInfo documentParseInfo = new DocumentParseInfo();
documentIdArg.ifPresent(documentId -> documentParseInfo.documentId = documentId);
do {
parseOneItem(documentParseInfo, documentIdArg.isPresent());
} while (indentLevel > 0L);
if (documentParseInfo.documentId != null) {
return Optional.of(documentParseInfo);
}
return Optional.empty();
}
use of com.yahoo.document.json.readers.DocumentParseInfo in project vespa by vespa-engine.
the class JsonReaderTestCase method parseUpdate.
private DocumentUpdate parseUpdate(String json) throws IOException {
InputStream rawDoc = new ByteArrayInputStream(Utf8.toBytes(json));
JsonReader r = new JsonReader(types, rawDoc, parserFactory);
DocumentParseInfo parseInfo = r.parseDocument().get();
DocumentType docType = r.readDocumentType(parseInfo.documentId);
DocumentUpdate update = new DocumentUpdate(docType, parseInfo.documentId);
new VespaJsonDocumentReader().readUpdate(parseInfo.fieldsBuffer, update);
return update;
}
use of com.yahoo.document.json.readers.DocumentParseInfo in project vespa by vespa-engine.
the class JsonReaderTestCase method testMap.
@Test
public final void testMap() throws IOException {
InputStream rawDoc = new ByteArrayInputStream(Utf8.toBytes("{\"put\": \"id:unittest:testmap::whee\"," + " \"fields\": { \"actualmap\": {" + " \"nalle\": \"kalle\", \"tralle\": \"skalle\"}}}"));
JsonReader r = new JsonReader(types, rawDoc, parserFactory);
DocumentParseInfo parseInfo = r.parseDocument().get();
DocumentType docType = r.readDocumentType(parseInfo.documentId);
DocumentPut put = new DocumentPut(new Document(docType, parseInfo.documentId));
new VespaJsonDocumentReader().readPut(parseInfo.fieldsBuffer, put);
Document doc = put.getDocument();
FieldValue f = doc.getFieldValue(doc.getField("actualmap"));
assertSame(MapFieldValue.class, f.getClass());
MapFieldValue<?, ?> m = (MapFieldValue<?, ?>) f;
assertEquals(2, m.size());
assertEquals(new StringFieldValue("kalle"), m.get(new StringFieldValue("nalle")));
assertEquals(new StringFieldValue("skalle"), m.get(new StringFieldValue("tralle")));
}
use of com.yahoo.document.json.readers.DocumentParseInfo in project vespa by vespa-engine.
the class JsonReaderTestCase method emptyDocTest.
@Test
public final void emptyDocTest() throws IOException {
InputStream rawDoc = new ByteArrayInputStream(Utf8.toBytes("{\"put\": \"id:unittest:smoke::whee\"," + " \"fields\": {}}"));
JsonReader r = new JsonReader(types, rawDoc, parserFactory);
DocumentParseInfo parseInfo = r.parseDocument().get();
DocumentType docType = r.readDocumentType(parseInfo.documentId);
DocumentPut put = new DocumentPut(new Document(docType, parseInfo.documentId));
new VespaJsonDocumentReader().readPut(parseInfo.fieldsBuffer, put);
assertEquals("id:unittest:smoke::whee", parseInfo.documentId.toString());
}
Aggregations