diff options
author | Haakon Dybdahl <dybdahl@yahoo-inc.com> | 2017-02-09 10:47:27 +0100 |
---|---|---|
committer | Haakon Dybdahl <dybdahl@yahoo-inc.com> | 2017-02-09 10:47:27 +0100 |
commit | cc3750a151866fe913f53c8fff4ba843cfbb1670 (patch) | |
tree | 6d3b94ed71c36b7cb7f115c2a8af4de560675cf3 /document/src/main | |
parent | 409e2de25332de3ddb452745f9bdafbe7d459d4a (diff) |
Clean up buffer fill a bit.
Diffstat (limited to 'document/src/main')
5 files changed, 28 insertions, 27 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 2d085f30eac..a286704d7d6 100644 --- a/document/src/main/java/com/yahoo/document/json/JsonReader.java +++ b/document/src/main/java/com/yahoo/document/json/JsonReader.java @@ -61,10 +61,6 @@ public class JsonReader { private final DocumentTypeManager typeManager; private ReaderState state = ReaderState.AT_START; - public enum SupportedOperation { - PUT, UPDATE, REMOVE - } - enum ReaderState { AT_START, READING, END_OF_FEED } @@ -86,7 +82,7 @@ public class JsonReader { * @param docIdString document ID. * @return the document */ - public DocumentOperation readSingleDocument(SupportedOperation operationType, String docIdString) { + public DocumentOperation readSingleDocument(DocumentParser.SupportedOperation operationType, String docIdString) { DocumentId docId = new DocumentId(docIdString); DocumentParseInfo documentParseInfo = parseToDocumentsFieldsAndInsertFieldsIntoBuffer(parser, docId); documentParseInfo.operationType = operationType; @@ -156,7 +152,7 @@ public class JsonReader { // Exposed for unit testing... void readUpdate(TokenBuffer buffer, DocumentUpdate next) { if (buffer.size() == 0) { - bufferFields(parser, buffer, nextToken(parser)); + buffer.bufferObject(nextToken(parser), parser); } populateUpdateFromBuffer(buffer, next); } @@ -164,7 +160,7 @@ public class JsonReader { // Exposed for unit testing... void readPut(TokenBuffer buffer, DocumentPut put) { if (buffer.size() == 0) { - bufferFields(parser, buffer, nextToken(parser)); + buffer.bufferObject(nextToken(parser), parser); } try { populateComposite(buffer, put.getDocument()); @@ -219,10 +215,6 @@ public class JsonReader { update.addFieldUpdate(fieldUpdate); } - public static void bufferFields(JsonParser parser, TokenBuffer buffer, JsonToken current) { - buffer.bufferObject(current, parser); - } - public DocumentType readDocumentType(DocumentId docId) { return getDocumentTypeFromString(docId.getDocType(), typeManager); } diff --git a/document/src/main/java/com/yahoo/document/json/SingleDocumentParser.java b/document/src/main/java/com/yahoo/document/json/SingleDocumentParser.java index 4476acfae22..0ca5ba744f1 100644 --- a/document/src/main/java/com/yahoo/document/json/SingleDocumentParser.java +++ b/document/src/main/java/com/yahoo/document/json/SingleDocumentParser.java @@ -6,6 +6,7 @@ import com.yahoo.document.DocumentOperation; import com.yahoo.document.DocumentPut; import com.yahoo.document.DocumentTypeManager; import com.yahoo.document.DocumentUpdate; +import com.yahoo.document.json.document.DocumentParser; import com.yahoo.vespaxmlparser.VespaXMLFeedReader; import java.io.IOException; @@ -25,14 +26,14 @@ public class SingleDocumentParser { } public VespaXMLFeedReader.Operation parsePut(InputStream inputStream, String docId) { - return parse(inputStream, docId, JsonReader.SupportedOperation.PUT); + return parse(inputStream, docId, DocumentParser.SupportedOperation.PUT); } public VespaXMLFeedReader.Operation parseUpdate(InputStream inputStream, String docId) { - return parse(inputStream, docId, JsonReader.SupportedOperation.UPDATE); + return parse(inputStream, docId, DocumentParser.SupportedOperation.UPDATE); } - private VespaXMLFeedReader.Operation parse(InputStream inputStream, String docId, JsonReader.SupportedOperation supportedOperation) { + private VespaXMLFeedReader.Operation parse(InputStream inputStream, String docId, DocumentParser.SupportedOperation supportedOperation) { final JsonReader reader = new JsonReader(docMan, inputStream, jsonFactory); final DocumentOperation documentOperation = reader.readSingleDocument(supportedOperation, docId); VespaXMLFeedReader.Operation operation = new VespaXMLFeedReader.Operation(); @@ -41,7 +42,7 @@ public class SingleDocumentParser { } catch (IOException e) { throw new RuntimeException(e); } - if (supportedOperation == JsonReader.SupportedOperation.PUT) { + if (supportedOperation == DocumentParser.SupportedOperation.PUT) { operation.setDocument(((DocumentPut) documentOperation).getDocument()); } else { operation.setDocumentUpdate((DocumentUpdate) documentOperation); diff --git a/document/src/main/java/com/yahoo/document/json/TokenBuffer.java b/document/src/main/java/com/yahoo/document/json/TokenBuffer.java index 116de5acd04..9f6a0ba3641 100644 --- a/document/src/main/java/com/yahoo/document/json/TokenBuffer.java +++ b/document/src/main/java/com/yahoo/document/json/TokenBuffer.java @@ -72,7 +72,7 @@ public class TokenBuffer { buffer.addLast(new Token(token, name, text)); } - void bufferObject(JsonToken first, JsonParser tokens) { + public void bufferObject(JsonToken first, JsonParser tokens) { int localNesting = 0; JsonToken t = first; diff --git a/document/src/main/java/com/yahoo/document/json/document/DocumentParser.java b/document/src/main/java/com/yahoo/document/json/document/DocumentParser.java index 8ac56e29b94..cbe41b261a0 100644 --- a/document/src/main/java/com/yahoo/document/json/document/DocumentParser.java +++ b/document/src/main/java/com/yahoo/document/json/document/DocumentParser.java @@ -4,17 +4,17 @@ package com.yahoo.document.json.document; import com.fasterxml.jackson.core.JsonParser; import com.fasterxml.jackson.core.JsonToken; import com.yahoo.document.DocumentId; -import com.yahoo.document.json.JsonReader; import com.yahoo.document.json.readers.DocumentParseInfo; import java.io.IOException; import java.util.Optional; -import static com.yahoo.document.json.JsonReader.bufferFields; -import static com.yahoo.document.json.JsonReader.nextToken; import static com.yahoo.document.json.readers.JsonParserHelpers.expectObjectStart; public class DocumentParser { + public enum SupportedOperation { + PUT, UPDATE, REMOVE + } private static final String UPDATE = "update"; private static final String PUT = "put"; private static final String ID = "id"; @@ -54,7 +54,7 @@ public class DocumentParser { // TODO more specific wrapping throw new RuntimeException(e); } - bufferFields(parser, documentParseInfo.fieldsBuffer, token); + documentParseInfo.fieldsBuffer.bufferObject(token, parser); continue; } if (token == JsonToken.END_OBJECT) { @@ -75,15 +75,15 @@ public class DocumentParser { } } - private static JsonReader.SupportedOperation operationNameToOperationType(String operationName) { + private static SupportedOperation operationNameToOperationType(String operationName) { switch (operationName) { case PUT: case ID: - return JsonReader.SupportedOperation.PUT; + return SupportedOperation.PUT; case REMOVE: - return JsonReader.SupportedOperation.REMOVE; + return SupportedOperation.REMOVE; case UPDATE: - return JsonReader.SupportedOperation.UPDATE; + return SupportedOperation.UPDATE; default: throw new IllegalArgumentException( "Got " + operationName + " as document operation, only \"put\", " + @@ -135,10 +135,18 @@ public class DocumentParser { } catch (IOException e) { throw new RuntimeException("Got IO exception while parsing document", e); } - bufferFields(parser, documentParseInfo.fieldsBuffer, t); + documentParseInfo.fieldsBuffer.bufferObject(t, parser); break; } } return documentParseInfo; } + + private static JsonToken nextToken(JsonParser parser) { + try { + return parser.nextValue(); + } catch (IOException e) { + throw new RuntimeException(e); + } + } } diff --git a/document/src/main/java/com/yahoo/document/json/readers/DocumentParseInfo.java b/document/src/main/java/com/yahoo/document/json/readers/DocumentParseInfo.java index a5ea8fd0812..7401e33c607 100644 --- a/document/src/main/java/com/yahoo/document/json/readers/DocumentParseInfo.java +++ b/document/src/main/java/com/yahoo/document/json/readers/DocumentParseInfo.java @@ -2,8 +2,8 @@ package com.yahoo.document.json.readers; import com.yahoo.document.DocumentId; -import com.yahoo.document.json.JsonReader; import com.yahoo.document.json.TokenBuffer; +import com.yahoo.document.json.document.DocumentParser; import java.util.Optional; @@ -11,6 +11,6 @@ public class DocumentParseInfo { public DocumentId documentId; public Optional<Boolean> create = Optional.empty(); public Optional<String> condition = Optional.empty(); - public JsonReader.SupportedOperation operationType = null; + public DocumentParser.SupportedOperation operationType = null; public TokenBuffer fieldsBuffer = new TokenBuffer(); } |