From 9b45cb0aac228e5ad8430b2fb7a4dda18eeb8aff Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ianar=C3=A9=20S=C3=A9vi?= Date: Fri, 20 Dec 2024 18:14:03 +0100 Subject: [PATCH] :bug: fix for server not properly formatting floats --- .../parsing/generated/GeneratedObject.java | 13 ++++++++++++- .../product/generated/GeneratedV1Test.java | 17 +++++++++++++++++ 2 files changed, 29 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/mindee/parsing/generated/GeneratedObject.java b/src/main/java/com/mindee/parsing/generated/GeneratedObject.java index 79b33c46b..8165f46d3 100644 --- a/src/main/java/com/mindee/parsing/generated/GeneratedObject.java +++ b/src/main/java/com/mindee/parsing/generated/GeneratedObject.java @@ -32,8 +32,19 @@ public StringField asStringField() { * Represent the object as a standard {@link AmountField}. */ public AmountField asAmountField() { + Double value; + Object rawValue = this.get("value"); + if (rawValue instanceof Integer) { + value = ((Integer) rawValue).doubleValue(); + } + else if (rawValue instanceof Double) { + value = (Double) rawValue; + } + else { + throw new ClassCastException("Cannot cast " + rawValue + " to Double"); + } return new AmountField( - (Double) this.get("value"), + value, this.getConfidence(), this.getPolygon(), this.getPageId() diff --git a/src/test/java/com/mindee/product/generated/GeneratedV1Test.java b/src/test/java/com/mindee/product/generated/GeneratedV1Test.java index e1fb217af..e8f1c8067 100644 --- a/src/test/java/com/mindee/product/generated/GeneratedV1Test.java +++ b/src/test/java/com/mindee/product/generated/GeneratedV1Test.java @@ -243,4 +243,21 @@ else if (featureValue.isList()) { } } } + + @Test + void whenAmountDeserialized_mustCastToDouble() { + GeneratedObject intObject = new GeneratedObject(); + intObject.put("value", 5); + AmountField fieldFromInt = intObject.asAmountField(); + Assertions.assertEquals(5.0, fieldFromInt.getValue()); + + GeneratedObject doubleObject = new GeneratedObject(); + doubleObject.put("value", 5.0); + AmountField fieldFromDouble = doubleObject.asAmountField(); + Assertions.assertEquals(5.0, fieldFromDouble.getValue()); + + GeneratedObject badStringObject = new GeneratedObject(); + doubleObject.put("value", "I will fail miserably"); + Assertions.assertThrows(ClassCastException.class, badStringObject::asAmountField); + } }