From 2aeaf5875915fae1bb03b00873e3028c6f61e5bf Mon Sep 17 00:00:00 2001 From: sebastianMindee <130448732+sebastianMindee@users.noreply.github.com> Date: Fri, 6 Feb 2026 15:52:54 +0100 Subject: [PATCH 1/4] :sparkles: add easy accessor for list in object field --- .../mindee/parsing/v2/field/ObjectField.java | 18 ++++++++++++++++++ .../com/mindee/input/LocalResponseV2Test.java | 2 +- .../com/mindee/parsing/v2/InferenceTest.java | 1 + src/test/resources | 2 +- 4 files changed, 21 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/mindee/parsing/v2/field/ObjectField.java b/src/main/java/com/mindee/parsing/v2/field/ObjectField.java index 8798d6b28..fa8e17bde 100644 --- a/src/main/java/com/mindee/parsing/v2/field/ObjectField.java +++ b/src/main/java/com/mindee/parsing/v2/field/ObjectField.java @@ -42,6 +42,24 @@ public LinkedHashMap getSimpleFields() throws IllegalStateE return simpleFields; } + /** + * Retrieves all subfields from the {@code fields} map as a {@link LinkedHashMap} of + * {@code ListField} objects, keyed by their field names. + * + * @return a {@link LinkedHashMap} containing the field names as keys and their corresponding + * {@code ListField} instances as values + * @throws IllegalStateException if any field is not of type {@code LIST_FIELD} + */ + public LinkedHashMap getListFields() throws IllegalStateException { + LinkedHashMap listFields = new LinkedHashMap<>(); + if (fields != null) { + for (String fieldName : fields.keySet()) { + listFields.put(fieldName, fields.getListField(fieldName)); + } + } + return listFields; + } + @Override public String toString() { return "\n" + (fields != null ? fields.toString(1) : ""); diff --git a/src/test/java/com/mindee/input/LocalResponseV2Test.java b/src/test/java/com/mindee/input/LocalResponseV2Test.java index b33eab2d4..c085af310 100644 --- a/src/test/java/com/mindee/input/LocalResponseV2Test.java +++ b/src/test/java/com/mindee/input/LocalResponseV2Test.java @@ -19,7 +19,7 @@ public class LocalResponseV2Test { /** * Real signature using fake secret key. */ - String signature = "1df388c992d87897fe61dfc56c444c58fc3c7369c31e2b5fd20d867695e93e85"; + String signature = "f390d9f7f57ac04f47b6309d8a40236b0182610804fc20e91b1f6028aaca07a7"; /** * File which the signature applies to. diff --git a/src/test/java/com/mindee/parsing/v2/InferenceTest.java b/src/test/java/com/mindee/parsing/v2/InferenceTest.java index 411617e50..caba8ed9c 100644 --- a/src/test/java/com/mindee/parsing/v2/InferenceTest.java +++ b/src/test/java/com/mindee/parsing/v2/InferenceTest.java @@ -174,6 +174,7 @@ void deepNestedFields_mustExposeCorrectTypes() throws IOException { InferenceFields lvl1 = fieldObject.getFields(); assertNotNull(lvl1.get("sub_object_list").getListField()); assertNotNull(lvl1.get("sub_object_object").getObjectField()); + assertEquals(3, lvl1.get("sub_object_object").getObjectField().getListFields().size()); ObjectField subObjectObject = lvl1.get("sub_object_object").getObjectField(); InferenceFields lvl2 = subObjectObject.getFields(); diff --git a/src/test/resources b/src/test/resources index 0c51e1d3e..67ccc1d9c 160000 --- a/src/test/resources +++ b/src/test/resources @@ -1 +1 @@ -Subproject commit 0c51e1d3e2258404c44280f25f4951ba6fe27324 +Subproject commit 67ccc1d9cf8b6263860f79eafbaa2e8b8dd7ac3f From 8922ce850745290b5ff85a2159c38743737f981b Mon Sep 17 00:00:00 2001 From: sebastianMindee <130448732+sebastianMindee@users.noreply.github.com> Date: Fri, 6 Feb 2026 16:48:43 +0100 Subject: [PATCH 2/4] fix tests --- .../com/mindee/parsing/v2/field/ObjectField.java | 12 +++++++----- src/test/java/com/mindee/MindeeSettingsTest.java | 3 +++ .../java/com/mindee/parsing/v2/InferenceTest.java | 2 +- 3 files changed, 11 insertions(+), 6 deletions(-) diff --git a/src/main/java/com/mindee/parsing/v2/field/ObjectField.java b/src/main/java/com/mindee/parsing/v2/field/ObjectField.java index fa8e17bde..33aca48b5 100644 --- a/src/main/java/com/mindee/parsing/v2/field/ObjectField.java +++ b/src/main/java/com/mindee/parsing/v2/field/ObjectField.java @@ -45,16 +45,18 @@ public LinkedHashMap getSimpleFields() throws IllegalStateE /** * Retrieves all subfields from the {@code fields} map as a {@link LinkedHashMap} of * {@code ListField} objects, keyed by their field names. - * + * * @return a {@link LinkedHashMap} containing the field names as keys and their corresponding - * {@code ListField} instances as values - * @throws IllegalStateException if any field is not of type {@code LIST_FIELD} + * {@code ListField} instances as values (only includes fields that are list fields) */ - public LinkedHashMap getListFields() throws IllegalStateException { + public LinkedHashMap getListFields() { LinkedHashMap listFields = new LinkedHashMap<>(); if (fields != null) { for (String fieldName : fields.keySet()) { - listFields.put(fieldName, fields.getListField(fieldName)); + DynamicField field = fields.get(fieldName); + if (field != null && field.getType() == DynamicField.FieldType.LIST_FIELD) { + listFields.put(fieldName, field.getListField()); + } } } return listFields; diff --git a/src/test/java/com/mindee/MindeeSettingsTest.java b/src/test/java/com/mindee/MindeeSettingsTest.java index 4ee59da15..48b198fca 100644 --- a/src/test/java/com/mindee/MindeeSettingsTest.java +++ b/src/test/java/com/mindee/MindeeSettingsTest.java @@ -2,11 +2,14 @@ import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.condition.DisabledForJreRange; +import org.junit.jupiter.api.condition.JRE; import org.junitpioneer.jupiter.SetEnvironmentVariable; public class MindeeSettingsTest { @Test + @DisabledForJreRange(min = JRE.JAVA_9, disabledReason = "JUnit Pioneer environment variable modification requires additional JVM flags on Java 9+") @SetEnvironmentVariable(key = "MINDEE_API_KEY", value = "abcd") @SetEnvironmentVariable(key = "MINDEE_API_URL", value = "https://example.com") void setEnvironmentVariablesAndEmptyParams() { diff --git a/src/test/java/com/mindee/parsing/v2/InferenceTest.java b/src/test/java/com/mindee/parsing/v2/InferenceTest.java index caba8ed9c..8ee1b058d 100644 --- a/src/test/java/com/mindee/parsing/v2/InferenceTest.java +++ b/src/test/java/com/mindee/parsing/v2/InferenceTest.java @@ -174,7 +174,7 @@ void deepNestedFields_mustExposeCorrectTypes() throws IOException { InferenceFields lvl1 = fieldObject.getFields(); assertNotNull(lvl1.get("sub_object_list").getListField()); assertNotNull(lvl1.get("sub_object_object").getObjectField()); - assertEquals(3, lvl1.get("sub_object_object").getObjectField().getListFields().size()); + assertEquals(1, lvl1.get("sub_object_object").getObjectField().getListFields().size()); ObjectField subObjectObject = lvl1.get("sub_object_object").getObjectField(); InferenceFields lvl2 = subObjectObject.getFields(); From 3130d3791cb5003536ed666d60bcb5a4e261234d Mon Sep 17 00:00:00 2001 From: sebastianMindee <130448732+sebastianMindee@users.noreply.github.com> Date: Fri, 6 Feb 2026 16:49:17 +0100 Subject: [PATCH 3/4] try experimental mockito bump? --- pom.xml | 25 +++++++++++++++++++++++-- 1 file changed, 23 insertions(+), 2 deletions(-) diff --git a/pom.xml b/pom.xml index 8366754b0..e7715ec3d 100644 --- a/pom.xml +++ b/pom.xml @@ -186,6 +186,15 @@ **/*Test.java + + --add-opens java.base/java.lang=ALL-UNNAMED + --add-opens java.base/java.util=ALL-UNNAMED + --add-opens java.base/java.net=ALL-UNNAMED + --add-opens java.base/sun.net.www.protocol.https=ALL-UNNAMED + --add-opens java.base/java.io=ALL-UNNAMED + --add-opens java.base/java.lang.reflect=ALL-UNNAMED + -Djunit.jupiter.extensions.autodetection.enabled=true + @@ -361,6 +370,18 @@ test ${org.mockito.inline.version} + + net.bytebuddy + byte-buddy + 1.15.11 + test + + + net.bytebuddy + byte-buddy-agent + 1.15.11 + test + com.github.tomakehurst wiremock-jre8 @@ -412,8 +433,8 @@ 1.8.2 2.2 1.5.3.Final - 4.6.1 - 4.5.1 + 5.2.0 + 5.2.0 0.2.0 1.18.32 2.0.17 From 458c455fd8599e50e08c0f4858de2b678c642ed0 Mon Sep 17 00:00:00 2001 From: sebastianMindee <130448732+sebastianMindee@users.noreply.github.com> Date: Fri, 6 Feb 2026 16:52:23 +0100 Subject: [PATCH 4/4] fix lint + test --- src/test/java/com/mindee/MindeeSettingsTest.java | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/src/test/java/com/mindee/MindeeSettingsTest.java b/src/test/java/com/mindee/MindeeSettingsTest.java index 48b198fca..46f76d69d 100644 --- a/src/test/java/com/mindee/MindeeSettingsTest.java +++ b/src/test/java/com/mindee/MindeeSettingsTest.java @@ -2,19 +2,16 @@ import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; -import org.junit.jupiter.api.condition.DisabledForJreRange; -import org.junit.jupiter.api.condition.JRE; import org.junitpioneer.jupiter.SetEnvironmentVariable; public class MindeeSettingsTest { @Test - @DisabledForJreRange(min = JRE.JAVA_9, disabledReason = "JUnit Pioneer environment variable modification requires additional JVM flags on Java 9+") @SetEnvironmentVariable(key = "MINDEE_API_KEY", value = "abcd") @SetEnvironmentVariable(key = "MINDEE_API_URL", value = "https://example.com") void setEnvironmentVariablesAndEmptyParams() { MindeeSettings settings = new MindeeSettings("", ""); - Assertions.assertEquals(settings.getApiKey().orElse(""), "abcd"); - Assertions.assertEquals(settings.getBaseUrl(), "https://example.com"); + Assertions.assertEquals("abcd", settings.getApiKey().orElse("")); + Assertions.assertEquals("https://example.com", settings.getBaseUrl()); } }