diff options
author | Haakon Dybdahl <dybdahl@yahoo-inc.com> | 2017-02-09 09:27:48 +0100 |
---|---|---|
committer | Haakon Dybdahl <dybdahl@yahoo-inc.com> | 2017-02-09 09:27:48 +0100 |
commit | 9783178a588f9cef47a8274253a5bed9324a20a8 (patch) | |
tree | 41bf3e137d340697ef4484b63b325ddbb2aac01a /document | |
parent | d0b20ef66b3bd7ff6ebd6ee4ebabc041cd1951f5 (diff) |
Make the API we need for later, and clean up a bit.
Diffstat (limited to 'document')
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); } } |