diff options
author | Jon Bratseth <bratseth@oath.com> | 2018-05-23 09:03:03 +0200 |
---|---|---|
committer | Jon Bratseth <bratseth@oath.com> | 2018-05-23 09:03:03 +0200 |
commit | 5db3df1e1c76922c8f9c66f2036f32bf0808012f (patch) | |
tree | d221868f1a673429e12dfa01aeb905622989ea55 /document | |
parent | 5db7b3494a981aeb457dc107966018f6e66f5f42 (diff) |
JSON feed validation WIP
Diffstat (limited to 'document')
3 files changed, 50 insertions, 0 deletions
diff --git a/document/src/main/java/com/yahoo/document/json/JsonFeedReader.java b/document/src/main/java/com/yahoo/document/json/JsonFeedReader.java index ec0d29a53a6..1b5681e7146 100644 --- a/document/src/main/java/com/yahoo/document/json/JsonFeedReader.java +++ b/document/src/main/java/com/yahoo/document/json/JsonFeedReader.java @@ -23,6 +23,7 @@ import com.yahoo.vespaxmlparser.VespaXMLFeedReader.Operation; * @author steinar */ public class JsonFeedReader implements FeedReader { + private final JsonReader reader; private InputStream stream; private static final JsonFactory jsonFactory = new JsonFactory().disable(JsonFactory.Feature.CANONICALIZE_FIELD_NAMES); 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 bedfbdc3da5..6b4605623b3 100644 --- a/document/src/main/java/com/yahoo/document/json/JsonReader.java +++ b/document/src/main/java/com/yahoo/document/json/JsonReader.java @@ -79,6 +79,7 @@ public class JsonReader { return operation; } + /** Returns the next document operation, or null if we have reached the end */ public DocumentOperation next() { switch (state) { case AT_START: diff --git a/document/src/test/java/com/yahoo/document/json/JsonReaderTestCase.java b/document/src/test/java/com/yahoo/document/json/JsonReaderTestCase.java index 07f0a172caf..443ff27cd20 100644 --- a/document/src/test/java/com/yahoo/document/json/JsonReaderTestCase.java +++ b/document/src/test/java/com/yahoo/document/json/JsonReaderTestCase.java @@ -1094,6 +1094,54 @@ public class JsonReaderTestCase { new JsonReader(types, jsonToInputStream(jsonData), parserFactory).next(); } + @Test + public void testMissingOperation() { + try { + String jsonData = inputJson( + "[", + " {", + " 'fields': {", + " 'actualarray': {", + " 'add': [", + " 'person',", + " 'another person'", + " ]", + " }", + " }", + " }", + "]"); + + new JsonReader(types, jsonToInputStream(jsonData), parserFactory).next(); + } + catch (IllegalArgumentException e) { + assertEquals("", e.getMessage()); + } + } + + @Test + public void testMissingFieldsMap() { todo ... + try { + String jsonData = inputJson( + "[", + " {", + " 'fields': {", + " 'actualarray': {", + " 'add': [", + " 'person',", + " 'another person'", + " ]", + " }", + " }", + " }", + "]"); + + new JsonReader(types, jsonToInputStream(jsonData), parserFactory).next(); + } + catch (IllegalArgumentException e) { + assertEquals("", e.getMessage()); + } + } + static ByteArrayInputStream jsonToInputStream(String json) { return new ByteArrayInputStream(Utf8.toBytes(json)); } |