diff options
Diffstat (limited to 'document/src/main/java/com/yahoo/document/json/JsonReader.java')
-rw-r--r-- | document/src/main/java/com/yahoo/document/json/JsonReader.java | 80 |
1 files changed, 1 insertions, 79 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 b6cf8c6e18b..3e1743b8d45 100644 --- a/document/src/main/java/com/yahoo/document/json/JsonReader.java +++ b/document/src/main/java/com/yahoo/document/json/JsonReader.java @@ -6,10 +6,8 @@ import com.fasterxml.jackson.core.JsonParser; import com.fasterxml.jackson.core.JsonToken; import com.yahoo.document.DocumentId; import com.yahoo.document.DocumentOperation; -import com.yahoo.document.DocumentPut; import com.yahoo.document.DocumentType; import com.yahoo.document.DocumentTypeManager; -import com.yahoo.document.DocumentUpdate; import com.yahoo.document.TestAndSetCondition; import com.yahoo.document.json.document.DocumentParser; import com.yahoo.document.json.readers.DocumentParseInfo; @@ -20,9 +18,6 @@ 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.document.DocumentParser.CONDITION; -import static com.yahoo.document.json.document.DocumentParser.CREATE_IF_NON_EXISTENT; -import static com.yahoo.document.json.document.DocumentParser.FIELDS; import static com.yahoo.document.json.readers.JsonParserHelpers.expectArrayStart; /** @@ -65,7 +60,7 @@ public class JsonReader { * @param docIdString document ID * @return the parsed document operation */ - ParsedDocumentOperation readSingleDocument(DocumentOperationType operationType, String docIdString) { + public ParsedDocumentOperation readSingleDocument(DocumentOperationType operationType, String docIdString) { DocumentId docId = new DocumentId(docIdString); DocumentParseInfo documentParseInfo; try { @@ -83,79 +78,6 @@ public class JsonReader { return operation; } - /** - * Reads a JSON which is expected to contain a single document operation, - * and where other parameters, like the document ID and operation type, are supplied by other means. - * - * @param operationType the type of operation (update or put) - * @param docIdString document ID - * @return the parsed document operation - */ - public ParsedDocumentOperation readSingleDocumentStreaming(DocumentOperationType operationType, String docIdString) { - try { - DocumentId docId = new DocumentId(docIdString); - DocumentParseInfo documentParseInfo = new DocumentParseInfo(); - documentParseInfo.documentId = docId; - documentParseInfo.operationType = operationType; - - if (JsonToken.START_OBJECT != parser.nextValue()) - throw new IllegalArgumentException("expected start of root object, got " + parser.currentToken()); - - Boolean create = null; - String condition = null; - ParsedDocumentOperation operation = null; - while (JsonToken.END_OBJECT != parser.nextValue()) { - switch (parser.getCurrentName()) { - case FIELDS -> { - documentParseInfo.fieldsBuffer = new LazyTokenBuffer(parser); - VespaJsonDocumentReader vespaJsonDocumentReader = new VespaJsonDocumentReader(typeManager.getIgnoreUndefinedFields()); - operation = vespaJsonDocumentReader.createDocumentOperation( - getDocumentTypeFromString(documentParseInfo.documentId.getDocType(), typeManager), documentParseInfo); - - if ( ! documentParseInfo.fieldsBuffer.isEmpty()) - throw new IllegalArgumentException("expected all content to be consumed by document parsing, but " + - documentParseInfo.fieldsBuffer.nesting() + " levels remain"); - - } - case CONDITION -> { - if ( ! JsonToken.VALUE_STRING.equals(parser.currentToken()) && ! JsonToken.VALUE_NULL.equals(parser.currentToken())) - throw new IllegalArgumentException("expected string value for condition, got " + parser.currentToken()); - - condition = parser.getValueAsString(); - } - case CREATE_IF_NON_EXISTENT -> { - create = parser.getBooleanValue(); // Throws if not boolean. - } - default -> { - // We ignore stray fields, but need to ensure structural balance in doing do. - if (parser.currentToken().isStructStart()) parser.skipChildren(); - } - } - } - - if (null != parser.nextToken()) - throw new IllegalArgumentException("expected end of input, got " + parser.currentToken()); - - if (null == operation) - throw new IllegalArgumentException("document is missing the required \"fields\" field"); - - if (null != create) { - switch (operationType) { - case PUT -> ((DocumentPut) operation.operation()).setCreateIfNonExistent(create); - case UPDATE -> ((DocumentUpdate) operation.operation()).setCreateIfNonExistent(create); - case REMOVE -> throw new IllegalArgumentException(CREATE_IF_NON_EXISTENT + " is not supported for remove operations"); - } - } - - operation.operation().setCondition(TestAndSetCondition.fromConditionString(Optional.ofNullable(condition))); - - return operation; - } - catch (IOException e) { - throw new IllegalArgumentException("failed parsing document", e); - } - } - /** Returns the next document operation, or null if we have reached the end */ public DocumentOperation next() { switch (state) { |