summaryrefslogtreecommitdiffstats
path: root/document/src/main
diff options
context:
space:
mode:
authorHaakon Dybdahl <dybdahl@yahoo-inc.com>2017-02-09 10:47:27 +0100
committerHaakon Dybdahl <dybdahl@yahoo-inc.com>2017-02-09 10:47:27 +0100
commitcc3750a151866fe913f53c8fff4ba843cfbb1670 (patch)
tree6d3b94ed71c36b7cb7f115c2a8af4de560675cf3 /document/src/main
parent409e2de25332de3ddb452745f9bdafbe7d459d4a (diff)
Clean up buffer fill a bit.
Diffstat (limited to 'document/src/main')
-rw-r--r--document/src/main/java/com/yahoo/document/json/JsonReader.java14
-rw-r--r--document/src/main/java/com/yahoo/document/json/SingleDocumentParser.java9
-rw-r--r--document/src/main/java/com/yahoo/document/json/TokenBuffer.java2
-rw-r--r--document/src/main/java/com/yahoo/document/json/document/DocumentParser.java26
-rw-r--r--document/src/main/java/com/yahoo/document/json/readers/DocumentParseInfo.java4
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();
}