@Test public void testArrayMapping() { JsonParser parser = JsonParser.newParser(); List<Object> values = new ArrayList<>(); parser.arrayValueMode(); parser.handler(event -> values.add(event.mapTo(LinkedList.class))); parser.handle(new JsonArray().add(0).add(1).add(2).toBuffer()); assertEquals(Collections.singletonList(Arrays.asList(0L, 1L, 2L)), values); assertEquals(LinkedList.class, values.get(0).getClass()); }
@Test public void testArrayMappingWithTypeReference() { JsonParser parser = JsonParser.newParser(); List<Object> values = new ArrayList<>(); parser.arrayValueMode(); parser.handler(event -> values.add(event.mapTo(new TypeReference<LinkedList<Long>>() {}))); parser.handle(new JsonArray().add(0).add(1).add(2).toBuffer()); assertEquals(Collections.singletonList(Arrays.asList(0L, 1L, 2L)), values); assertEquals(LinkedList.class, values.get(0).getClass()); }
@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()); }
@Test public void testParseArrayValue() { JsonParser parser = JsonParser.newParser(); AtomicInteger status = new AtomicInteger(); parser.arrayValueMode(); JsonArray expected = new JsonArray() .add(3) .add(3.5d) .add(true) .add(false) .add("s") .addNull() .add(new JsonObject().put("foo", "bar")) .add(new JsonArray().add(0).add(1).add(2)) .add(new byte[]{1, 2, 3}); parser.handler(event -> { assertEquals(expected, event.value()); assertEquals(0, status.getAndIncrement()); }); parser.handle(expected.toBuffer()); assertEquals(1, status.get()); }
@Test public void testArrayMappingWithTypeReference() { JsonParser parser = JsonParser.newParser(); List<Object> values = new ArrayList<>(); parser.arrayValueMode(); parser.handler(event -> values.add(event.mapTo(new TypeReference<LinkedList<Long>>() {}))); parser.handle(new JsonArray().add(0).add(1).add(2).toBuffer()); assertEquals(Collections.singletonList(Arrays.asList(0L, 1L, 2L)), values); assertEquals(LinkedList.class, values.get(0).getClass()); }
@Test public void testArrayMapping() { JsonParser parser = JsonParser.newParser(); List<Object> values = new ArrayList<>(); parser.arrayValueMode(); parser.handler(event -> values.add(event.mapTo(LinkedList.class))); parser.handle(new JsonArray().add(0).add(1).add(2).toBuffer()); assertEquals(Collections.singletonList(Arrays.asList(0L, 1L, 2L)), values); assertEquals(LinkedList.class, values.get(0).getClass()); }
@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()); }
/** * Flip the parser to emit a single value event for each new json array. * </p> * Json array currently streamed won't be affected. * @return a reference to this, so the API can be used fluently */ public io.vertx.rxjava.core.parsetools.JsonParser arrayValueMode() { delegate.arrayValueMode(); return this; }
/** * Flip the parser to emit a single value event for each new json array. * </p> * Json array currently streamed won't be affected. * @return a reference to this, so the API can be used fluently */ public io.vertx.rxjava.core.parsetools.JsonParser arrayValueMode() { delegate.arrayValueMode(); return this; }
@Test public void testParseArrayValue() { JsonParser parser = JsonParser.newParser(); AtomicInteger status = new AtomicInteger(); parser.arrayValueMode(); JsonArray expected = new JsonArray() .add(3) .add(3.5d) .add(true) .add(false) .add("s") .addNull() .add(new JsonObject().put("foo", "bar")) .add(new JsonArray().add(0).add(1).add(2)) .add(new byte[]{1, 2, 3}); parser.handler(event -> { assertEquals(expected, event.value()); assertEquals(0, status.getAndIncrement()); }); parser.handle(expected.toBuffer()); assertEquals(1, status.get()); }