@Override public void get(Handler<AsyncResult<Buffer>> completionHandler) { client.getValues(prefix, kv -> { if (kv.succeeded()) { KeyValueList list = kv.result(); if (list.isPresent()) { JsonObject tree = getTree(list, prefix.length(), delimiter); completionHandler.handle(Future.succeededFuture(Buffer.buffer(tree.toString()))); } else { completionHandler.handle(Future.succeededFuture(Buffer.buffer("{}"))); } } else { completionHandler.handle(Future.failedFuture(kv.cause())); } }); }
@Test public void keysNotFound(TestContext tc) { String key = randomFooBarUnicode(); ctx.readClient() .getValues(key, tc.asyncAssertSuccess(list -> { tc.assertFalse(list.isPresent()); })); }
@Test public void testKeyPrefix() throws InterruptedException { StateConsumer<String> consumer = new StateConsumer<>(); String keyPrefix = ConsulContext.KEY_RW_PREFIX + randomAlphaString(10); String k1 = keyPrefix + randomAlphaString(10); String k2 = keyPrefix + randomAlphaString(10); String v1 = randomAlphaString(10); String v2 = randomAlphaString(10); assertTrue(getAsync(h -> ctx.writeClient().putValue(k1, v1, h))); Watch<KeyValueList> watch = Watch.keyPrefix(keyPrefix, vertx, ctx.readClientOptions()) .setHandler(kv -> { if (kv.succeeded()) { if (kv.nextResult().isPresent()) { consumer.consume(kv.nextResult().getList().stream().map(KeyValue::getValue).sorted().collect(Collectors.joining("/"))); } else { consumer.consume(EMPTY_MESSAGE); } } else { consumer.consume(kv.cause().getMessage()); } }) .start(); consumer.await(v1); assertTrue(getAsync(h -> ctx.writeClient().putValue(k2, v2, h))); consumer.await(Stream.of(v1, v2).sorted().collect(Collectors.joining("/"))); runAsync(h -> ctx.writeClient().deleteValues(keyPrefix, h)); consumer.await(EMPTY_MESSAGE); consumer.check(); watch.stop(); }