summaryrefslogtreecommitdiffstats
path: root/document
diff options
context:
space:
mode:
authorHaakon Dybdahl <dybdahl@yahoo-inc.com>2017-02-09 09:27:48 +0100
committerHaakon Dybdahl <dybdahl@yahoo-inc.com>2017-02-09 09:27:48 +0100
commit9783178a588f9cef47a8274253a5bed9324a20a8 (patch)
tree41bf3e137d340697ef4484b63b325ddbb2aac01a /document
parentd0b20ef66b3bd7ff6ebd6ee4ebabc041cd1951f5 (diff)
Make the API we need for later, and clean up a bit.
Diffstat (limited to 'document')
-rw-r--r--document/src/main/java/com/yahoo/document/json/JsonReader.java10
-rw-r--r--document/src/main/java/com/yahoo/document/json/readers/CompositeReader.java41
-rw-r--r--document/src/main/java/com/yahoo/document/json/readers/SingleValueReader.java6
3 files changed, 29 insertions, 28 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 c879ed337ba..4fc20649cc6 100644
--- a/document/src/main/java/com/yahoo/document/json/JsonReader.java
+++ b/document/src/main/java/com/yahoo/document/json/JsonReader.java
@@ -172,9 +172,8 @@ public class JsonReader {
if (buffer.size() == 0) {
bufferFields(parser, buffer, nextToken(parser));
}
- JsonToken t = buffer.currentToken();
try {
- populateComposite(buffer, put.getDocument(), t);
+ populateComposite(buffer, put.getDocument());
} catch (JsonReaderException e) {
throw JsonReaderException.addDocId(e, put.getId());
}
@@ -236,13 +235,6 @@ public class JsonReader {
}
- public static FieldValue NEWpopulateComposite(DataType dataType, JsonParser parser) throws IOException {
- // bla
- JsonToken t = parser.nextToken();
- return null;
- }
-
-
public static void expectCompositeEnd(JsonToken token) {
Preconditions.checkState(token.isStructEnd(), "Expected end of composite, got %s", token);
}
diff --git a/document/src/main/java/com/yahoo/document/json/readers/CompositeReader.java b/document/src/main/java/com/yahoo/document/json/readers/CompositeReader.java
index efb491ac545..ba5fcab2f01 100644
--- a/document/src/main/java/com/yahoo/document/json/readers/CompositeReader.java
+++ b/document/src/main/java/com/yahoo/document/json/readers/CompositeReader.java
@@ -17,31 +17,44 @@ import static com.yahoo.document.json.readers.WeightedSetReader.fillWeightedSet;
public class CompositeReader {
- // TODO populateComposite is extremely similar to add/remove, refactor
+ // TODO createComposite is extremely similar to add/remove, refactor
// yes, this suppresswarnings ugliness is by intention, the code relies on the contracts in the builders
@SuppressWarnings({ "cast", "rawtypes" })
- public static void populateComposite(TokenBuffer buffer, FieldValue parent, JsonToken token) {
+ public static FieldValue createComposite(TokenBuffer buffer, DataType expectedType) {
+ FieldValue fieldValue = expectedType.createFieldValue();
+ populateComposite(buffer, fieldValue);
+ return fieldValue;
+ }
+
+ // TODO createComposite is extremely similar to add/remove, refactor
+ // yes, this suppresswarnings ugliness is by intention, the code relies on the contracts in the builders
+ @SuppressWarnings({ "cast", "rawtypes" })
+ public static void populateComposite(TokenBuffer buffer, FieldValue fieldValue) {
+ JsonToken token = buffer.currentToken();
if ((token != JsonToken.START_OBJECT) && (token != JsonToken.START_ARRAY)) {
throw new IllegalArgumentException("Expected '[' or '{'. Got '" + token + "'.");
}
- if (parent instanceof CollectionFieldValue) {
- DataType valueType = ((CollectionFieldValue) parent).getDataType().getNestedType();
- if (parent instanceof WeightedSet) {
- fillWeightedSet(buffer, valueType, (WeightedSet) parent);
+ if (fieldValue instanceof CollectionFieldValue) {
+ DataType valueType = ((CollectionFieldValue) fieldValue).getDataType().getNestedType();
+ if (fieldValue instanceof WeightedSet) {
+ fillWeightedSet(buffer, valueType, (WeightedSet) fieldValue);
} else {
- fillArray(buffer, (CollectionFieldValue) parent, valueType);
+ fillArray(buffer, (CollectionFieldValue) fieldValue, valueType);
}
- } else if (parent instanceof MapFieldValue) {
- MapReader.fillMap(buffer, (MapFieldValue) parent);
- } else if (parent instanceof StructuredFieldValue) {
- StructReader.fillStruct(buffer, (StructuredFieldValue) parent);
- } else if (parent instanceof TensorFieldValue) {
- TensorReader.fillTensor(buffer, (TensorFieldValue) parent);
+ } else if (fieldValue instanceof MapFieldValue) {
+ MapReader.fillMap(buffer, (MapFieldValue) fieldValue);
+ } else if (fieldValue instanceof StructuredFieldValue) {
+ StructReader.fillStruct(buffer, (StructuredFieldValue) fieldValue);
+ } else if (fieldValue instanceof TensorFieldValue) {
+ TensorReader.fillTensor(buffer, (TensorFieldValue) fieldValue);
} else {
throw new IllegalStateException("Has created a composite field"
+ " value the reader does not know how to handle: "
- + parent.getClass().getName() + " This is a bug. token = " + token);
+ + fieldValue.getClass().getName() + " This is a bug. token = " + token);
}
expectCompositeEnd(buffer.currentToken());
}
+
+
+
}
diff --git a/document/src/main/java/com/yahoo/document/json/readers/SingleValueReader.java b/document/src/main/java/com/yahoo/document/json/readers/SingleValueReader.java
index 5c9f0e9516e..5440300eadf 100644
--- a/document/src/main/java/com/yahoo/document/json/readers/SingleValueReader.java
+++ b/document/src/main/java/com/yahoo/document/json/readers/SingleValueReader.java
@@ -8,8 +8,6 @@ import com.yahoo.document.json.JsonReader;
import com.yahoo.document.json.TokenBuffer;
import com.yahoo.document.update.ValueUpdate;
-import static com.yahoo.document.json.readers.CompositeReader.populateComposite;
-
public class SingleValueReader {
public static final String UPDATE_ASSIGN = "assign";
public static final String UPDATE_INCREMENT = "increment";
@@ -21,9 +19,7 @@ public class SingleValueReader {
if (t.isScalarValue()) {
return JsonReader.readAtomic(buffer, expectedType);
} else {
- FieldValue v = expectedType.createFieldValue();
- populateComposite(buffer, v, t);
- return v;
+ return CompositeReader.createComposite(buffer, expectedType);
}
}