diff --git a/packages/java/endpoint/src/main/java/com/vaadin/hilla/EndpointInvoker.java b/packages/java/endpoint/src/main/java/com/vaadin/hilla/EndpointInvoker.java
index dd28ed23ef..918b033c2a 100644
--- a/packages/java/endpoint/src/main/java/com/vaadin/hilla/EndpointInvoker.java
+++ b/packages/java/endpoint/src/main/java/com/vaadin/hilla/EndpointInvoker.java
@@ -47,7 +47,6 @@
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.lang.reflect.Parameter;
-import java.lang.reflect.ParameterizedType;
import java.lang.reflect.Type;
import java.security.Principal;
@@ -126,81 +125,6 @@ private static Logger getLogger() {
return LoggerFactory.getLogger(EndpointInvoker.class);
}
- private boolean needsFloatToIntCoercion(JsonNode node, Type targetType) {
- if (node == null) {
- return false;
- }
-
- // Direct number node
- if (node.isNumber() && isIntegralType(targetType)
- && !node.canConvertToExactIntegral()) {
- return true;
- }
-
- // Array node containing floats to be converted to integral types
- if (node.isArray() && isIntegralType(targetType)) {
- for (JsonNode element : node) {
- if (element.isNumber()
- && !element.canConvertToExactIntegral()) {
- return true;
- }
- }
- }
-
- // Object node (for Maps and complex objects)
- if (node.isObject() && targetType instanceof ParameterizedType) {
- Type rawType = ((ParameterizedType) targetType).getRawType();
- if (rawType instanceof Class>
- && Map.class.isAssignableFrom((Class>) rawType)) {
- Type[] args = ((ParameterizedType) targetType)
- .getActualTypeArguments();
- if (args.length > 1 && isIntegralType(args[1])) {
- // Check if any map values need conversion
- for (JsonNode value : node) {
- if (value.isNumber()
- && !value.canConvertToExactIntegral()) {
- return true;
- }
- }
- }
- }
- }
-
- return false;
- }
-
- private boolean isIntegralType(Type type) {
- if (type instanceof Class>) {
- Class> cls = (Class>) type;
- if (cls.isArray()) {
- // Handle array types
- return isIntegralType(cls.getComponentType());
- }
- return cls == int.class || cls == Integer.class || cls == long.class
- || cls == Long.class || cls == short.class
- || cls == Short.class || cls == byte.class
- || cls == Byte.class || cls == java.math.BigInteger.class;
- } else if (type instanceof ParameterizedType) {
- Type rawType = ((ParameterizedType) type).getRawType();
- if (rawType instanceof Class>) {
- Class> cls = (Class>) rawType;
- // Check for collections of integral types
- if (Collection.class.isAssignableFrom(cls)
- || Map.class.isAssignableFrom(cls)) {
- Type[] args = ((ParameterizedType) type)
- .getActualTypeArguments();
- if (args.length > 0) {
- // For Map, check the value type (args[1])
- int checkIndex = Map.class.isAssignableFrom(cls)
- && args.length > 1 ? 1 : 0;
- return isIntegralType(args[checkIndex]);
- }
- }
- }
- }
- return false;
- }
-
/**
* Gets the return type of the given method.
*
@@ -418,26 +342,10 @@ private Object[] getVaadinEndpointParameters(
Type parameterType = javaParameters[i];
Type incomingType = parameterType;
try {
- JsonNode parameterNode = requestParameters
- .get(parameterNames[i]);
- Object parameter;
-
- // Jackson 3 limitation: TreeTraversingParser doesn't respect
- // ACCEPT_FLOAT_AS_INT
- // when deserializing from JsonNode. Convert to string for
- // numeric coercion.
- if (needsFloatToIntCoercion(parameterNode, parameterType)) {
- // Convert JsonNode to string to allow float-to-int coercion
- parameter = endpointObjectMapper
- .readerFor(endpointObjectMapper.getTypeFactory()
- .constructType(incomingType))
- .readValue(parameterNode.toString());
- } else {
- parameter = endpointObjectMapper
- .readerFor(endpointObjectMapper.getTypeFactory()
- .constructType(incomingType))
- .readValue(parameterNode);
- }
+ Object parameter = endpointObjectMapper
+ .readerFor(endpointObjectMapper.getTypeFactory()
+ .constructType(incomingType))
+ .readValue(requestParameters.get(parameterNames[i]));
endpointParameters[i] = parameter;
if (parameter != null) {
diff --git a/pom.xml b/pom.xml
index 90562f4378..a942f35253 100644
--- a/pom.xml
+++ b/pom.xml
@@ -87,7 +87,7 @@
2.1.15
2.20.0
2.20
- 3.0.0-rc9
+ 3.0.0
5.10.1
4.5.0
25.0-SNAPSHOT