@Test public void testParseTopValues() { Map<String, Object> tests = new HashMap<>(); tests.put("\"a-string\"", "a-string"); tests.put("true", true); tests.put("false", false); tests.put("1234", 1234L); tests.put("" + Long.MAX_VALUE, Long.MAX_VALUE); tests.forEach((test, expected) -> { JsonParser parser = JsonParser.newParser(); List<Object> values = new ArrayList<>(); parser.handler(event -> values.add(event.value())); parser.handle(Buffer.buffer(test)); parser.end(); assertEquals(Collections.singletonList(expected), values); }); }
@Test public void parseNumberFormatException() { Buffer data = Buffer.buffer(Long.MAX_VALUE + "0"); try { JsonParser.newParser().handler(val -> {}).write(data).end(); fail(); } catch (DecodeException expected) { } List<Throwable> errors = new ArrayList<>(); JsonParser.newParser().exceptionHandler(errors::add).handler(val -> {}).write(data).end(); assertEquals(1, errors.size()); }
@Test public void parseUnfinished() { Buffer data = Buffer.buffer("{\"un\":\"finished\""); try { JsonParser parser = JsonParser.newParser(); parser.handle(data); parser.end(); fail(); } catch (DecodeException expected) { } JsonParser parser = JsonParser.newParser(); List<Throwable> errors = new ArrayList<>(); parser.exceptionHandler(errors::add); parser.handle(data); parser.end(); assertEquals(1, errors.size()); }
@Test public void testObjectMappingError() { List<Object> values = new ArrayList<>(); List<Throwable> errors = new ArrayList<>(); JsonParser.newParser().objectValueMode().handler(event -> values.add(event.mapTo(TheObject.class))).exceptionHandler(errors::add).write(Buffer.buffer("{\"destination\":\"unknown\"}")).end(); assertEquals(Collections.emptyList(), values); assertEquals(1, errors.size()); try { JsonParser.newParser().objectValueMode().handler(event -> values.add(event.mapTo(TheObject.class))).write(Buffer.buffer("{\"destination\":\"unknown\"}")).end(); fail(); } catch (DecodeException expected) { } assertEquals(Collections.emptyList(), values); assertEquals(1, errors.size()); }
@Test public void testArrayMappingError() { List<Object> values = new ArrayList<>(); List<Throwable> errors = new ArrayList<>(); JsonParser.newParser().arrayValueMode().handler(event -> values.add(event.mapTo(TheObject.class))).exceptionHandler(errors::add).write(Buffer.buffer("[]")).end(); assertEquals(Collections.emptyList(), values); assertEquals(1, errors.size()); try { JsonParser.newParser().arrayValueMode().handler(event -> values.add(event.mapTo(TheObject.class))).write(Buffer.buffer("[]")).end(); fail(); } catch (DecodeException expected) { } assertEquals(Collections.emptyList(), values); assertEquals(1, errors.size()); }
@Override public void end() { parser.end(); }
@Test public void testParseTopValues() { Map<String, Object> tests = new HashMap<>(); tests.put("\"a-string\"", "a-string"); tests.put("true", true); tests.put("false", false); tests.put("1234", 1234L); tests.put("" + Long.MAX_VALUE, Long.MAX_VALUE); tests.forEach((test, expected) -> { JsonParser parser = JsonParser.newParser(); List<Object> values = new ArrayList<>(); parser.handler(event -> values.add(event.value())); parser.handle(Buffer.buffer(test)); parser.end(); assertEquals(Collections.singletonList(expected), values); }); }
@Test public void parseNumberFormatException() { Buffer data = Buffer.buffer(Long.MAX_VALUE + "0"); try { JsonParser.newParser().handler(val -> {}).write(data).end(); fail(); } catch (DecodeException expected) { } List<Throwable> errors = new ArrayList<>(); JsonParser.newParser().exceptionHandler(errors::add).handler(val -> {}).write(data).end(); assertEquals(1, errors.size()); }
@Test public void parseUnfinished() { Buffer data = Buffer.buffer("{\"un\":\"finished\""); try { JsonParser parser = JsonParser.newParser(); parser.handle(data); parser.end(); fail(); } catch (DecodeException expected) { } JsonParser parser = JsonParser.newParser(); List<Throwable> errors = new ArrayList<>(); parser.exceptionHandler(errors::add); parser.handle(data); parser.end(); assertEquals(1, errors.size()); }
@Test public void testObjectMappingError() { List<Object> values = new ArrayList<>(); List<Throwable> errors = new ArrayList<>(); JsonParser.newParser().objectValueMode().handler(event -> values.add(event.mapTo(TheObject.class))).exceptionHandler(errors::add).write(Buffer.buffer("{\"destination\":\"unknown\"}")).end(); assertEquals(Collections.emptyList(), values); assertEquals(1, errors.size()); try { JsonParser.newParser().objectValueMode().handler(event -> values.add(event.mapTo(TheObject.class))).write(Buffer.buffer("{\"destination\":\"unknown\"}")).end(); fail(); } catch (DecodeException expected) { } assertEquals(Collections.emptyList(), values); assertEquals(1, errors.size()); }
@Test public void testArrayMappingError() { List<Object> values = new ArrayList<>(); List<Throwable> errors = new ArrayList<>(); JsonParser.newParser().arrayValueMode().handler(event -> values.add(event.mapTo(TheObject.class))).exceptionHandler(errors::add).write(Buffer.buffer("[]")).end(); assertEquals(Collections.emptyList(), values); assertEquals(1, errors.size()); try { JsonParser.newParser().arrayValueMode().handler(event -> values.add(event.mapTo(TheObject.class))).write(Buffer.buffer("[]")).end(); fail(); } catch (DecodeException expected) { } assertEquals(Collections.emptyList(), values); assertEquals(1, errors.size()); }
/** * End the stream, this must be called after all the json stream has been processed. */ public void end() { delegate.end(); }
/** * End the stream, this must be called after all the json stream has been processed. */ public void end() { delegate.end(); }
@Override public void end() { parser.end(); }