diff --git a/.mvn/jvm.config b/.mvn/jvm.config new file mode 100644 index 000000000..61a567f8c --- /dev/null +++ b/.mvn/jvm.config @@ -0,0 +1,5 @@ +--add-exports jdk.compiler/com.sun.tools.javac.api=ALL-UNNAMED +--add-exports jdk.compiler/com.sun.tools.javac.file=ALL-UNNAMED +--add-exports jdk.compiler/com.sun.tools.javac.parser=ALL-UNNAMED +--add-exports jdk.compiler/com.sun.tools.javac.tree=ALL-UNNAMED +--add-exports jdk.compiler/com.sun.tools.javac.util=ALL-UNNAMED diff --git a/pom.xml b/pom.xml index ceb1a2d9e..76e753723 100644 --- a/pom.xml +++ b/pom.xml @@ -90,21 +90,20 @@ ${org.projectlombok.lombok-mapstruct-binding.version} - 11 - 11 + ${compiler.release} + + + + org.apache.maven.plugins + maven-pmd-plugin + 3.23.0 + + false + true + 3 + ${compiler.release} - - org.apache.maven.plugins - maven-pmd-plugin - 3.23.0 - - false - true - 3 - 11 - - com.diffplug.spotless spotless-maven-plugin @@ -129,8 +128,7 @@ org.apache.maven.plugins maven-compiler-plugin - 11 - 11 + ${compiler.release} @@ -150,7 +148,7 @@ org.sonatype.central central-publishing-maven-plugin - 0.8.0 + 0.9.0 true central @@ -162,22 +160,6 @@ - - jdk-9-plus - - [9,) - - - - --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 - - - release @@ -356,12 +338,6 @@ test ${org.junit.jupiter.version} - - junit-platform-suite - org.junit.platform - test - ${org.junit.platform.version} - junit-pioneer org.junit-pioneer @@ -386,13 +362,6 @@ ${wiremock.version} test - - - org.hamcrest - hamcrest - ${org.hamcrest.version} - test - @@ -405,16 +374,37 @@ 5.0.0-alpha1 + + + --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 + + + + 11 + + UTF-8 + + 3.1.1 2.21.2 4.12.0 - 4.7.6 - 11 - 11 + 4.7.7 3.6.1 5.4.4 - 1.20.0 - 3.1.0 + 1.21.0 + 3.0.7 + 1.5.3.Final + 0.2.0 + 1.18.40 + 2.0.17 + + + 3.5.0 3.12.1 3.5.5 1.5 @@ -424,18 +414,11 @@ 3.0.2 3.0.0 3.7.1 - 3.2.5 - 3.0.5 - 5.8.2 - 1.9.1 - 1.9.2 - 2.2 - 1.5.3.Final - 0.2.0 - 1.18.38 - 2.0.17 - UTF-8 + 3.5.5 3.13.2 + + 5.11.4 + 2.3.0 diff --git a/src/main/java/com/mindee/v1/parsing/LocalResponse.java b/src/main/java/com/mindee/v1/parsing/LocalResponse.java index b9244d014..b5f9aa0d6 100644 --- a/src/main/java/com/mindee/v1/parsing/LocalResponse.java +++ b/src/main/java/com/mindee/v1/parsing/LocalResponse.java @@ -62,6 +62,7 @@ private

R deserialize( public AsyncPredictResponse deserializeAsyncResponse( Class productClass ) throws IOException { + @SuppressWarnings("unchecked") AsyncPredictResponse response = deserialize(AsyncPredictResponse.class, productClass); response.setRawResponse(new String(this.file, StandardCharsets.UTF_8)); return response; @@ -78,6 +79,7 @@ public AsyncPredictResponse deserializeAsyncResponse( public PredictResponse deserializeSyncResponse( Class productClass ) throws IOException { + @SuppressWarnings("unchecked") PredictResponse response = deserialize(PredictResponse.class, productClass); response.setRawResponse(new String(this.file, StandardCharsets.UTF_8)); return response; diff --git a/src/main/java/com/mindee/v1/parsing/generated/GeneratedObject.java b/src/main/java/com/mindee/v1/parsing/generated/GeneratedObject.java index ce1c883f0..6fba3e9b8 100644 --- a/src/main/java/com/mindee/v1/parsing/generated/GeneratedObject.java +++ b/src/main/java/com/mindee/v1/parsing/generated/GeneratedObject.java @@ -36,7 +36,7 @@ public StringField asStringField() { * @return An {@link AmountField} containing a double value. */ public AmountField asAmountField() { - Double value; + double value; Object rawValue = this.get("value"); if (rawValue instanceof Integer) { value = ((Integer) rawValue).doubleValue(); @@ -109,13 +109,13 @@ public Polygon getAsPolygon(String key) { if (!this.containsKey(key)) { return null; } - Object rawPolygon = this.get(key); + var rawPolygon = this.get(key); // a valid polygon must have at least 4 points if (!(rawPolygon instanceof List && ((List) rawPolygon).size() >= 4)) { return null; } // a valid point must have exactly 2 coordinates - for (Object point : (List) rawPolygon) { + for (var point : (List) rawPolygon) { if (!(point instanceof List) || ((List) point).size() != 2) { return null; } @@ -125,7 +125,9 @@ public Polygon getAsPolygon(String key) { } } } - return new Polygon((List>) rawPolygon); + @SuppressWarnings("unchecked") + List> points = (List>) rawPolygon; + return new Polygon(points); } /** diff --git a/src/main/java/com/mindee/v1/parsing/generated/GeneratedV1PredictionDeserializer.java b/src/main/java/com/mindee/v1/parsing/generated/GeneratedV1PredictionDeserializer.java index 8369810ac..cdf946f85 100644 --- a/src/main/java/com/mindee/v1/parsing/generated/GeneratedV1PredictionDeserializer.java +++ b/src/main/java/com/mindee/v1/parsing/generated/GeneratedV1PredictionDeserializer.java @@ -1,17 +1,13 @@ package com.mindee.v1.parsing.generated; import com.fasterxml.jackson.core.JsonParser; -import com.fasterxml.jackson.core.type.TypeReference; import com.fasterxml.jackson.databind.DeserializationContext; import com.fasterxml.jackson.databind.JsonNode; -import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.deser.std.StdDeserializer; import com.fasterxml.jackson.databind.node.ObjectNode; import com.mindee.v1.product.generated.GeneratedV1Document; import java.io.IOException; import java.util.HashMap; -import java.util.Iterator; -import java.util.Map; /** * JSON deserializer for generated documents v1.x. @@ -22,8 +18,6 @@ public GeneratedV1PredictionDeserializer(Class vc) { super(vc); } - private static final ObjectMapper mapper = new ObjectMapper(); - public GeneratedV1PredictionDeserializer() { this(null); } @@ -33,27 +27,24 @@ public GeneratedV1Document deserialize( JsonParser jsonParser, DeserializationContext deserializationContext ) throws IOException { - ObjectNode rootNode = jsonParser.getCodec().readTree(jsonParser); - Map features = new HashMap<>(); + var mapper = jsonParser.getCodec(); + ObjectNode rootNode = mapper.readTree(jsonParser); + var features = new HashMap(); - for (Iterator> subNode = rootNode.fields(); subNode.hasNext();) { - Map.Entry featureNode = subNode.next(); + for (var featureNode : rootNode.properties()) { String featureName = featureNode.getKey(); GeneratedFeature feature; - if (featureNode.getValue().isArray()) { feature = new GeneratedFeature(true); for (JsonNode item : featureNode.getValue()) { - GeneratedObject value = mapper.readerFor(new TypeReference() { - }).readValue(item); + GeneratedObject value = mapper.treeToValue(item, GeneratedObject.class); feature.add(value); } features.put(featureName, feature); } else { feature = new GeneratedFeature(false); - GeneratedObject value = mapper.readerFor(new TypeReference() { - }).readValue(featureNode.getValue()); + GeneratedObject value = mapper.treeToValue(featureNode.getValue(), GeneratedObject.class); feature.add(value); } features.put(featureName, feature); diff --git a/src/main/java/com/mindee/v2/parsing/inference/field/DynamicField.java b/src/main/java/com/mindee/v2/parsing/inference/field/DynamicField.java index c0966bf0c..9710cf76c 100644 --- a/src/main/java/com/mindee/v2/parsing/inference/field/DynamicField.java +++ b/src/main/java/com/mindee/v2/parsing/inference/field/DynamicField.java @@ -82,13 +82,13 @@ public ObjectField getObjectField() throws IllegalStateException { */ public T getField(Class type) throws IllegalArgumentException { if (type == SimpleField.class) { - return (T) this.getSimpleField(); + return type.cast(this.getSimpleField()); } if (type == ListField.class) { - return (T) this.getListField(); + return type.cast(this.getListField()); } if (type == ObjectField.class) { - return (T) this.getObjectField(); + return type.cast(this.getObjectField()); } throw new IllegalArgumentException("Cannot cast to " + type.getSimpleName()); } diff --git a/src/test/java/com/mindee/v1/http/MindeeHttpApiV1Test.java b/src/test/java/com/mindee/v1/http/MindeeHttpApiV1Test.java index 1898864f9..9efd4dd19 100644 --- a/src/test/java/com/mindee/v1/http/MindeeHttpApiV1Test.java +++ b/src/test/java/com/mindee/v1/http/MindeeHttpApiV1Test.java @@ -8,7 +8,6 @@ import static com.github.tomakehurst.wiremock.client.WireMock.urlMatching; import static com.mindee.TestingUtilities.getV1ResourcePath; import static com.mindee.TestingUtilities.getV1ResourcePathString; -import static org.hamcrest.MatcherAssert.assertThat; import com.fasterxml.jackson.core.type.TypeReference; import com.fasterxml.jackson.databind.ObjectMapper; @@ -35,7 +34,6 @@ import org.apache.hc.client5.http.impl.classic.HttpClients; import org.apache.hc.client5.http.impl.routing.DefaultProxyRoutePlanner; import org.apache.hc.core5.http.HttpHost; -import org.hamcrest.collection.IsMapContaining; import org.junit.After; import org.junit.Assert; import org.junit.Before; @@ -213,7 +211,7 @@ void givenParseParametersWithFileUrl_whenParsed_shouldBuildRequestCorrectly() th Map requestMap = objectMapper .readValue(recordedRequest.getBody().readUtf8(), new TypeReference>() { }); - assertThat(requestMap, IsMapContaining.hasEntry("document", "https://thisfile.does.not.exist")); + Assertions.assertEquals("https://thisfile.does.not.exist", requestMap.get("document")); } @Test