test_class.declarator: KEY_PREFIX = "prefix"
test_class.modifier: static final
test_class.original_string: static final String KEY_PREFIX = "prefix";
test_class.type: String
test_class.var_name: KEY_PREFIX
test_class.declarator: KEY_URI = "uri"
test_class.modifier: static final
test_class.original_string: static final String KEY_URI = "uri";
test_class.type: String
test_class.var_name: KEY_URI
test_class.file: api/src/test/java/net/adamcin/oakpal/api/JavaxJsonTest.java
test_class.identifier: JavaxJsonTest
test_case.body: @Test
      public void testParseFromArray() {
          final JsonArray input = arr().val("foo1:bar1").val("foo2:bar2").val("notvalid").val("foo3:bar3").get();
          final List<Map.Entry<String, String>> expected = Arrays.asList(
                  toEntry("foo1", "bar1"),
                  toEntry("foo2", "bar2"),
                  toEntry("foo3", "bar3")
          );
          final CompletableFuture<Map.Entry<String, Exception>> errorLatch = new CompletableFuture<>();
          final List<Map.Entry<String, String>> parsed = JavaxJson.parseFromArray(input, value -> {
              if (value.contains(":")) {
                  final String[] parts = value.split(":", 2);
                  return toEntry(parts[0], parts[1]);
              } else {
                  throw new IllegalArgumentException("missing colon");
              }
          }, (value, error) -> errorLatch.complete(toEntry(value, error)));
          assertEquals("parse function should work", expected, parsed);
          assertTrue("error latch is done", errorLatch.isDone());
          final Map.Entry<String, Exception> fromLatch = errorLatch.getNow(toEntry("", new Exception("")));
          assertEquals("error latch key is", "notvalid",
                  fromLatch.getKey());
          assertEquals("error latch error message is", "missing colon",
                  fromLatch.getValue().getMessage());
      }
test_case.class_method_signature: JavaxJsonTest.testParseFromArray()
test_case.full_signature: @Test public void testParseFromArray()
test_case.identifier: testParseFromArray
test_case.invocations: get val val val val arr asList toEntry toEntry toEntry parseFromArray contains split toEntry complete toEntry assertEquals assertTrue isDone getNow toEntry assertEquals getKey assertEquals getMessage getValue
test_case.modifiers: @Test public
test_case.parameters: ()
test_case.return: void
test_case.signature: void testParseFromArray()
focal_class.declarator: JSON_VALUE_STRING = compose1(JavaxJson::unwrap, Object::toString)
focal_class.modifier: @SuppressWarnings("WeakerAccess")
      public static final
focal_class.original_string: @SuppressWarnings("WeakerAccess")
      public static final Function<JsonValue, String> JSON_VALUE_STRING = compose1(JavaxJson::unwrap, Object::toString);
focal_class.type: Function<JsonValue, String>
focal_class.var_name: JSON_VALUE_STRING
focal_class.file: api/src/main/java/net/adamcin/oakpal/api/JavaxJson.java
focal_class.identifier: JavaxJson
focal_class.class_method_signature: JavaxJson.JavaxJson()
focal_class.full_signature: private  JavaxJson()
focal_class.identifier: JavaxJson
focal_class.modifiers: private
focal_class.parameters: ()
focal_class.signature:  JavaxJson()
focal_class.class_method_signature: JavaxJson.nonEmptyValue(final @Nullable JsonValue value)
focal_class.full_signature: public static boolean nonEmptyValue(final @Nullable JsonValue value)
focal_class.identifier: nonEmptyValue
focal_class.modifiers: public static
focal_class.parameters: (final @Nullable JsonValue value)
focal_class.return: boolean
focal_class.signature: boolean nonEmptyValue(final @Nullable JsonValue value)
focal_class.class_method_signature: JavaxJson.nonDefaultValue(final @Nullable JsonValue value, final @NotNull JsonValue defaultValue)
focal_class.full_signature: public static boolean nonDefaultValue(final @Nullable JsonValue value, final @NotNull JsonValue defaultValue)
focal_class.identifier: nonDefaultValue
focal_class.modifiers: public static
focal_class.parameters: (final @Nullable JsonValue value, final @NotNull JsonValue defaultValue)
focal_class.return: boolean
focal_class.signature: boolean nonDefaultValue(final @Nullable JsonValue value, final @NotNull JsonValue defaultValue)
focal_class.class_method_signature: JavaxJson.wrap(final Object object)
focal_class.full_signature: public static JsonValue wrap(final Object object)
focal_class.identifier: wrap
focal_class.modifiers: public static
focal_class.parameters: (final Object object)
focal_class.return: JsonValue
focal_class.signature: JsonValue wrap(final Object object)
focal_class.class_method_signature: JavaxJson.unwrap(final JsonValue jsonValue)
focal_class.full_signature: @SuppressWarnings("WeakerAccess") public static Object unwrap(final JsonValue jsonValue)
focal_class.identifier: unwrap
focal_class.modifiers: @SuppressWarnings("WeakerAccess") public static
focal_class.parameters: (final JsonValue jsonValue)
focal_class.return: Object
focal_class.signature: Object unwrap(final JsonValue jsonValue)
focal_class.class_method_signature: JavaxJson.unwrapObject(final JsonObject jsonObject)
focal_class.full_signature: @SuppressWarnings("WeakerAccess") public static Map<String, Object> unwrapObject(final JsonObject jsonObject)
focal_class.identifier: unwrapObject
focal_class.modifiers: @SuppressWarnings("WeakerAccess") public static
focal_class.parameters: (final JsonObject jsonObject)
focal_class.return: Map<String, Object>
focal_class.signature: Map<String, Object> unwrapObject(final JsonObject jsonObject)
focal_class.class_method_signature: JavaxJson.unwrapArray(final JsonArray jsonArray)
focal_class.full_signature: @SuppressWarnings("WeakerAccess") public static List<Object> unwrapArray(final JsonArray jsonArray)
focal_class.identifier: unwrapArray
focal_class.modifiers: @SuppressWarnings("WeakerAccess") public static
focal_class.parameters: (final JsonArray jsonArray)
focal_class.return: List<Object>
focal_class.signature: List<Object> unwrapArray(final JsonArray jsonArray)
focal_class.class_method_signature: JavaxJson.shallowMergeObjects(final @Nullable JsonObject base,
                                                            final @Nullable JsonObject overlay)
focal_class.full_signature: public static @NotNull JsonObject shallowMergeObjects(final @Nullable JsonObject base,
                                                            final @Nullable JsonObject overlay)
focal_class.identifier: shallowMergeObjects
focal_class.modifiers: public static @NotNull
focal_class.parameters: (final @Nullable JsonObject base,
                                                            final @Nullable JsonObject overlay)
focal_class.return: JsonObject
focal_class.signature: JsonObject shallowMergeObjects(final @Nullable JsonObject base,
                                                            final @Nullable JsonObject overlay)
focal_class.class_method_signature: JavaxJson.val(Object value)
focal_class.full_signature: public static Value val(Object value)
focal_class.identifier: val
focal_class.modifiers: public static
focal_class.parameters: (Object value)
focal_class.return: Value
focal_class.signature: Value val(Object value)
focal_class.class_method_signature: JavaxJson.obj(final Key... keys)
focal_class.full_signature: public static Obj obj(final Key... keys)
focal_class.identifier: obj
focal_class.modifiers: public static
focal_class.parameters: (final Key... keys)
focal_class.return: Obj
focal_class.signature: Obj obj(final Key... keys)
focal_class.class_method_signature: JavaxJson.obj(final JsonObject jsonObject)
focal_class.full_signature: public static Obj obj(final JsonObject jsonObject)
focal_class.identifier: obj
focal_class.modifiers: public static
focal_class.parameters: (final JsonObject jsonObject)
focal_class.return: Obj
focal_class.signature: Obj obj(final JsonObject jsonObject)
focal_class.class_method_signature: JavaxJson.obj(final Map<?, ?> map)
focal_class.full_signature: public static Obj obj(final Map<?, ?> map)
focal_class.identifier: obj
focal_class.modifiers: public static
focal_class.parameters: (final Map<?, ?> map)
focal_class.return: Obj
focal_class.signature: Obj obj(final Map<?, ?> map)
focal_class.class_method_signature: JavaxJson.key(final String key, final Object value)
focal_class.full_signature: public static Key key(final String key, final Object value)
focal_class.identifier: key
focal_class.modifiers: public static
focal_class.parameters: (final String key, final Object value)
focal_class.return: Key
focal_class.signature: Key key(final String key, final Object value)
focal_class.class_method_signature: JavaxJson.key(final String key)
focal_class.full_signature: public static KeyCursor key(final String key)
focal_class.identifier: key
focal_class.modifiers: public static
focal_class.parameters: (final String key)
focal_class.return: KeyCursor
focal_class.signature: KeyCursor key(final String key)
focal_class.class_method_signature: JavaxJson.arr(Object... values)
focal_class.full_signature: public static Arr arr(Object... values)
focal_class.identifier: arr
focal_class.modifiers: public static
focal_class.parameters: (Object... values)
focal_class.return: Arr
focal_class.signature: Arr arr(Object... values)
focal_class.class_method_signature: JavaxJson.optObject(final JsonObject json, final String key)
focal_class.full_signature: @SuppressWarnings("WeakerAccess") public static Optional<JsonObject> optObject(final JsonObject json, final String key)
focal_class.identifier: optObject
focal_class.modifiers: @SuppressWarnings("WeakerAccess") public static
focal_class.parameters: (final JsonObject json, final String key)
focal_class.return: Optional<JsonObject>
focal_class.signature: Optional<JsonObject> optObject(final JsonObject json, final String key)
focal_class.class_method_signature: JavaxJson.objectOrEmpty(final JsonObject json, final String key)
focal_class.full_signature: @SuppressWarnings("WeakerAccess") public static JsonObject objectOrEmpty(final JsonObject json, final String key)
focal_class.identifier: objectOrEmpty
focal_class.modifiers: @SuppressWarnings("WeakerAccess") public static
focal_class.parameters: (final JsonObject json, final String key)
focal_class.return: JsonObject
focal_class.signature: JsonObject objectOrEmpty(final JsonObject json, final String key)
focal_class.class_method_signature: JavaxJson.optArray(final JsonObject json, final String key)
focal_class.full_signature: @SuppressWarnings("WeakerAccess") public static Optional<JsonArray> optArray(final JsonObject json, final String key)
focal_class.identifier: optArray
focal_class.modifiers: @SuppressWarnings("WeakerAccess") public static
focal_class.parameters: (final JsonObject json, final String key)
focal_class.return: Optional<JsonArray>
focal_class.signature: Optional<JsonArray> optArray(final JsonObject json, final String key)
focal_class.class_method_signature: JavaxJson.arrayOrEmpty(final JsonObject json, final String key)
focal_class.full_signature: public static JsonArray arrayOrEmpty(final JsonObject json, final String key)
focal_class.identifier: arrayOrEmpty
focal_class.modifiers: public static
focal_class.parameters: (final JsonObject json, final String key)
focal_class.return: JsonArray
focal_class.signature: JsonArray arrayOrEmpty(final JsonObject json, final String key)
focal_class.class_method_signature: JavaxJson.mapArrayOfStrings(final JsonArray jsonArray)
focal_class.full_signature: public static List<String> mapArrayOfStrings(final JsonArray jsonArray)
focal_class.identifier: mapArrayOfStrings
focal_class.modifiers: public static
focal_class.parameters: (final JsonArray jsonArray)
focal_class.return: List<String>
focal_class.signature: List<String> mapArrayOfStrings(final JsonArray jsonArray)
focal_class.class_method_signature: JavaxJson.mapArrayOfStrings(final JsonArray jsonArray,
                                                  final Function<String, R> mapFunction)
focal_class.full_signature: public static List<R> mapArrayOfStrings(final JsonArray jsonArray,
                                                  final Function<String, R> mapFunction)
focal_class.identifier: mapArrayOfStrings
focal_class.modifiers: public static
focal_class.parameters: (final JsonArray jsonArray,
                                                  final Function<String, R> mapFunction)
focal_class.return: List<R>
focal_class.signature: List<R> mapArrayOfStrings(final JsonArray jsonArray,
                                                  final Function<String, R> mapFunction)
focal_class.class_method_signature: JavaxJson.mapArrayOfStrings(final JsonArray jsonArray,
                                                  final Function<String, R> mapFunction,
                                                  final boolean discardNulls)
focal_class.full_signature: public static List<R> mapArrayOfStrings(final JsonArray jsonArray,
                                                  final Function<String, R> mapFunction,
                                                  final boolean discardNulls)
focal_class.identifier: mapArrayOfStrings
focal_class.modifiers: public static
focal_class.parameters: (final JsonArray jsonArray,
                                                  final Function<String, R> mapFunction,
                                                  final boolean discardNulls)
focal_class.return: List<R>
focal_class.signature: List<R> mapArrayOfStrings(final JsonArray jsonArray,
                                                  final Function<String, R> mapFunction,
                                                  final boolean discardNulls)
focal_class.class_method_signature: JavaxJson.mapArrayOfObjects(final JsonArray jsonArray,
                                                  final Function<JsonObject, R> mapFunction)
focal_class.full_signature: public static List<R> mapArrayOfObjects(final JsonArray jsonArray,
                                                  final Function<JsonObject, R> mapFunction)
focal_class.identifier: mapArrayOfObjects
focal_class.modifiers: public static
focal_class.parameters: (final JsonArray jsonArray,
                                                  final Function<JsonObject, R> mapFunction)
focal_class.return: List<R>
focal_class.signature: List<R> mapArrayOfObjects(final JsonArray jsonArray,
                                                  final Function<JsonObject, R> mapFunction)
focal_class.class_method_signature: JavaxJson.mapArrayOfObjects(final JsonArray jsonArray,
                                                  final Function<JsonObject, R> mapFunction,
                                                  final boolean discardNulls)
focal_class.full_signature: public static List<R> mapArrayOfObjects(final JsonArray jsonArray,
                                                  final Function<JsonObject, R> mapFunction,
                                                  final boolean discardNulls)
focal_class.identifier: mapArrayOfObjects
focal_class.modifiers: public static
focal_class.parameters: (final JsonArray jsonArray,
                                                  final Function<JsonObject, R> mapFunction,
                                                  final boolean discardNulls)
focal_class.return: List<R>
focal_class.signature: List<R> mapArrayOfObjects(final JsonArray jsonArray,
                                                  final Function<JsonObject, R> mapFunction,
                                                  final boolean discardNulls)
focal_class.class_method_signature: JavaxJson.mapObjectValues(final JsonObject jsonObject,
                                                final BiFunction<String, JsonObject, R> mapBiFunction,
                                                final boolean discardNulls)
focal_class.full_signature: public static List<R> mapObjectValues(final JsonObject jsonObject,
                                                final BiFunction<String, JsonObject, R> mapBiFunction,
                                                final boolean discardNulls)
focal_class.identifier: mapObjectValues
focal_class.modifiers: public static
focal_class.parameters: (final JsonObject jsonObject,
                                                final BiFunction<String, JsonObject, R> mapBiFunction,
                                                final boolean discardNulls)
focal_class.return: List<R>
focal_class.signature: List<R> mapObjectValues(final JsonObject jsonObject,
                                                final BiFunction<String, JsonObject, R> mapBiFunction,
                                                final boolean discardNulls)
focal_class.class_method_signature: JavaxJson.parseFromArray(final @NotNull JsonArray jsonArray,
                                               final @NotNull Fun.ThrowingFunction<String, R> parser,
                                               final @Nullable BiConsumer<String, Exception> errorConsumer)
focal_class.full_signature: @SuppressWarnings("WeakerAccess") public static List<R> parseFromArray(final @NotNull JsonArray jsonArray,
                                               final @NotNull Fun.ThrowingFunction<String, R> parser,
                                               final @Nullable BiConsumer<String, Exception> errorConsumer)
focal_class.identifier: parseFromArray
focal_class.modifiers: @SuppressWarnings("WeakerAccess") public static
focal_class.parameters: (final @NotNull JsonArray jsonArray,
                                               final @NotNull Fun.ThrowingFunction<String, R> parser,
                                               final @Nullable BiConsumer<String, Exception> errorConsumer)
focal_class.return: List<R>
focal_class.signature: List<R> parseFromArray(final @NotNull JsonArray jsonArray,
                                               final @NotNull Fun.ThrowingFunction<String, R> parser,
                                               final @Nullable BiConsumer<String, Exception> errorConsumer)
focal_class.class_method_signature: JavaxJson.hasNonNull(final @NotNull JsonObject json, final String key)
focal_class.full_signature: public static boolean hasNonNull(final @NotNull JsonObject json, final String key)
focal_class.identifier: hasNonNull
focal_class.modifiers: public static
focal_class.parameters: (final @NotNull JsonObject json, final String key)
focal_class.return: boolean
focal_class.signature: boolean hasNonNull(final @NotNull JsonObject json, final String key)
focal_method.body: @SuppressWarnings("WeakerAccess")
      public static <R> List<R> parseFromArray(final @NotNull JsonArray jsonArray,
                                               final @NotNull Fun.ThrowingFunction<String, R> parser,
                                               final @Nullable BiConsumer<String, Exception> errorConsumer) {
          return jsonArray.stream()
                  .map(JSON_VALUE_STRING)
                  .flatMap(Fun.composeTry1(Stream::of, Stream::empty, parser, errorConsumer))
                  .collect(Collectors.toList());
      }
focal_method.class_method_signature: JavaxJson.parseFromArray(final @NotNull JsonArray jsonArray,
                                               final @NotNull Fun.ThrowingFunction<String, R> parser,
                                               final @Nullable BiConsumer<String, Exception> errorConsumer)
focal_method.full_signature: @SuppressWarnings("WeakerAccess") public static List<R> parseFromArray(final @NotNull JsonArray jsonArray,
                                               final @NotNull Fun.ThrowingFunction<String, R> parser,
                                               final @Nullable BiConsumer<String, Exception> errorConsumer)
focal_method.identifier: parseFromArray
focal_method.invocations: collect flatMap map stream composeTry1 toList
focal_method.modifiers: @SuppressWarnings("WeakerAccess") public static
focal_method.parameters: (final @NotNull JsonArray jsonArray,
                                               final @NotNull Fun.ThrowingFunction<String, R> parser,
                                               final @Nullable BiConsumer<String, Exception> errorConsumer)
focal_method.return: List<R>
focal_method.signature: List<R> parseFromArray(final @NotNull JsonArray jsonArray,
                                               final @NotNull Fun.ThrowingFunction<String, R> parser,
                                               final @Nullable BiConsumer<String, Exception> errorConsumer)