@Test public void testObjectHandlerScope() { JsonParser parser = JsonParser.newParser(); List<JsonObject> objects = new ArrayList<>(); AtomicInteger ends = new AtomicInteger(); AtomicBoolean obj = new AtomicBoolean(); parser.handler(event -> { switch (event.type()) { case START_OBJECT: parser.objectValueMode(); break; case VALUE: if (obj.get()) { objects.add((JsonObject) event.value()); } break; case END_OBJECT: ends.incrementAndGet(); obj.set(true); break; } }); parser.handle(Buffer.buffer("[" + "{\"one\":1}," + "{\"two\":2}," + "{\"three\":3}" + "]")); assertEquals(1, ends.get()); assertEquals(Arrays.asList(new JsonObject().put("two", 2), new JsonObject().put("three", 3)), objects); }
@Test public void testObjectMapping() { JsonParser parser = JsonParser.newParser(); List<Object> values = new ArrayList<>(); parser.objectValueMode(); parser.handler(event -> values.add(event.mapTo(TheObject.class))); parser.handle(new JsonObject().put("f", "the-value").toBuffer()); assertEquals(Collections.singletonList(new TheObject("the-value")), values); }
jsonParser.objectValueMode() .exceptionHandler(t -> { t.printStackTrace();
@Test public void testObjectMappingWithTypeReference() { JsonParser parser = JsonParser.newParser(); List<Object> values = new ArrayList<>(); parser.objectValueMode(); parser.handler(event -> values.add(event.mapTo(new TypeReference<TheObject>() {}))); parser.handle(new JsonObject().put("f", "the-value").toBuffer()); assertEquals(Collections.singletonList(new TheObject("the-value")), values); }
@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 testParseObjectValue() { JsonParser parser = JsonParser.newParser(); AtomicInteger status = new AtomicInteger(); parser.objectValueMode(); JsonObject expected = new JsonObject() .put("number", 3) .put("floating", 3.5d) .put("true", true) .put("false", false) .put("string", "s") .put("object", new JsonObject().put("foo", "bar")) .put("array", new JsonArray().add(0).add(1).add(2)) .putNull("null") .put("bytes", new byte[]{1, 2, 3}); parser.handler(event -> { assertEquals(0, status.getAndIncrement()); assertEquals(JsonEventType.VALUE, event.type()); assertEquals(expected, event.value()); }); parser.handle(expected.toBuffer()); assertEquals(1, status.get()); }
JsonParser parser = JsonParser.newParser(); AtomicInteger status = new AtomicInteger(); parser.objectValueMode(); parser.handler(event -> { switch (status.getAndIncrement()) {
case 0: assertEquals(JsonEventType.START_OBJECT, event.type()); parser.objectValueMode(); break; case 1:
@Test public void testObjectMapping() { JsonParser parser = JsonParser.newParser(); List<Object> values = new ArrayList<>(); parser.objectValueMode(); parser.handler(event -> values.add(event.mapTo(TheObject.class))); parser.handle(new JsonObject().put("f", "the-value").toBuffer()); assertEquals(Collections.singletonList(new TheObject("the-value")), values); }
@Test public void testObjectMappingWithTypeReference() { JsonParser parser = JsonParser.newParser(); List<Object> values = new ArrayList<>(); parser.objectValueMode(); parser.handler(event -> values.add(event.mapTo(new TypeReference<TheObject>() {}))); parser.handle(new JsonObject().put("f", "the-value").toBuffer()); assertEquals(Collections.singletonList(new TheObject("the-value")), values); }
@Test public void testObjectHandlerScope() { JsonParser parser = JsonParser.newParser(); List<JsonObject> objects = new ArrayList<>(); AtomicInteger ends = new AtomicInteger(); AtomicBoolean obj = new AtomicBoolean(); parser.handler(event -> { switch (event.type()) { case START_OBJECT: parser.objectValueMode(); break; case VALUE: if (obj.get()) { objects.add((JsonObject) event.value()); } break; case END_OBJECT: ends.incrementAndGet(); obj.set(true); break; } }); parser.handle(Buffer.buffer("[" + "{\"one\":1}," + "{\"two\":2}," + "{\"three\":3}" + "]")); assertEquals(1, ends.get()); assertEquals(Arrays.asList(new JsonObject().put("two", 2), new JsonObject().put("three", 3)), objects); }
@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 testParseObjectValue() { JsonParser parser = JsonParser.newParser(); AtomicInteger status = new AtomicInteger(); parser.objectValueMode(); JsonObject expected = new JsonObject() .put("number", 3) .put("floating", 3.5d) .put("true", true) .put("false", false) .put("string", "s") .put("object", new JsonObject().put("foo", "bar")) .put("array", new JsonArray().add(0).add(1).add(2)) .putNull("null") .put("bytes", new byte[]{1, 2, 3}); parser.handler(event -> { assertEquals(0, status.getAndIncrement()); assertEquals(JsonEventType.VALUE, event.type()); assertEquals(expected, event.value()); }); parser.handle(expected.toBuffer()); assertEquals(1, status.get()); }
/** * Flip the parser to emit a single value event for each new json object. * </p> * Json object 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 objectValueMode() { delegate.objectValueMode(); return this; }
/** * Flip the parser to emit a single value event for each new json object. * </p> * Json object 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 objectValueMode() { delegate.objectValueMode(); return this; }
JsonParser parser = JsonParser.newParser(); AtomicInteger status = new AtomicInteger(); parser.objectValueMode(); parser.handler(event -> { switch (status.getAndIncrement()) {
case 0: assertEquals(JsonEventType.START_OBJECT, event.type()); parser.objectValueMode(); break; case 1:
private void watch(WebClient client, String token, String resourceVersion) { String path = "/api/v1/namespaces/" + namespace + "/services"; JsonParser parser = JsonParser.newParser().objectValueMode() .handler(event -> onChunk(event.objectValue()));