diff --git a/core-common/src/main/java/org/glassfish/jersey/internal/util/PropertiesHelper.java b/core-common/src/main/java/org/glassfish/jersey/internal/util/PropertiesHelper.java index 4e6aace537..a351ddccf0 100644 --- a/core-common/src/main/java/org/glassfish/jersey/internal/util/PropertiesHelper.java +++ b/core-common/src/main/java/org/glassfish/jersey/internal/util/PropertiesHelper.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012, 2021 Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2012, 2022 Oracle and/or its affiliates. All rights reserved. * * This program and the accompanying materials are made available under the * terms of the Eclipse Public License v. 2.0, which is available at @@ -285,6 +285,15 @@ private static Object getLegacyFallbackValue(Map properties, Map T convertValue(Object value, Class type) { + + if (((type.equals(Integer.class)) || (type.equals(int.class))) && Number.class.isInstance(value)) { + final Integer number2Int = ((Number) value).intValue(); + return (T) number2Int; + } else if (((type.equals(Long.class)) || (type.equals(long.class))) && Number.class.isInstance(value)) { + final Long number2Long = ((Number) value).longValue(); + return (T) number2Long; + } + if (!type.isInstance(value)) { // TODO: Move string value readers from server to common and utilize them here final Constructor constructor = AccessController.doPrivileged(ReflectionHelper.getStringConstructorPA(type)); diff --git a/core-common/src/test/java/org/glassfish/jersey/internal/util/PropertiesHelperTest.java b/core-common/src/test/java/org/glassfish/jersey/internal/util/PropertiesHelperTest.java index 93d53e1b11..1b319a8afb 100644 --- a/core-common/src/test/java/org/glassfish/jersey/internal/util/PropertiesHelperTest.java +++ b/core-common/src/test/java/org/glassfish/jersey/internal/util/PropertiesHelperTest.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2013, 2018 Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2013, 2022 Oracle and/or its affiliates. All rights reserved. * * This program and the accompanying materials are made available under the * terms of the Eclipse Public License v. 2.0, which is available at @@ -173,4 +173,30 @@ public void testPropertyNameDeclination() { assertEquals(myNonJerseyProperty, PropertiesHelper.getPropertyNameForRuntime(myNonJerseyProperty, null)); } + @Test + public void testconvertValue() { + Long lg = 10L; + long l = 10L; + Integer ig = 10; + int i = 10; + + assertEquals(ig, PropertiesHelper.convertValue(i, Integer.class)); + assertEquals(ig, PropertiesHelper.convertValue(ig, Integer.class)); + assertEquals(ig, PropertiesHelper.convertValue(l, Integer.class)); + assertEquals(ig, PropertiesHelper.convertValue(lg, Integer.class)); + assertEquals(lg, PropertiesHelper.convertValue(i, Long.class)); + assertEquals(lg, PropertiesHelper.convertValue(ig, Long.class)); + assertEquals(lg, PropertiesHelper.convertValue(l, Long.class)); + assertEquals(lg, PropertiesHelper.convertValue(lg, Long.class)); + assertEquals(ig, PropertiesHelper.convertValue(i, int.class)); + assertEquals(ig, PropertiesHelper.convertValue(ig, int.class)); + assertEquals(ig, PropertiesHelper.convertValue(l, int.class)); + assertEquals(ig, PropertiesHelper.convertValue(lg, int.class)); + assertEquals(lg, PropertiesHelper.convertValue(i, long.class)); + assertEquals(lg, PropertiesHelper.convertValue(ig, long.class)); + assertEquals(lg, PropertiesHelper.convertValue(l, long.class)); + assertEquals(lg, PropertiesHelper.convertValue(lg, long.class)); + + } + }