diff --git a/acl/src/main/java/org/springframework/security/acls/jdbc/AclClassIdUtils.java b/acl/src/main/java/org/springframework/security/acls/jdbc/AclClassIdUtils.java index 677dbb5cb8..65b5d80f54 100644 --- a/acl/src/main/java/org/springframework/security/acls/jdbc/AclClassIdUtils.java +++ b/acl/src/main/java/org/springframework/security/acls/jdbc/AclClassIdUtils.java @@ -118,7 +118,7 @@ class AclClassIdUtils { */ private Long convertToLong(Serializable identifier) { Long idAsLong; - if (canConvertFromStringTo(Long.class)) { + if (conversionService.canConvert(identifier.getClass(), Long.class)) { idAsLong = conversionService.convert(identifier, Long.class); } else { idAsLong = Long.valueOf(identifier.toString()); diff --git a/acl/src/test/java/org/springframework/security/acls/jdbc/AclClassIdUtilsTest.java b/acl/src/test/java/org/springframework/security/acls/jdbc/AclClassIdUtilsTest.java index 65e7fd83fc..5dd2e36f31 100644 --- a/acl/src/test/java/org/springframework/security/acls/jdbc/AclClassIdUtilsTest.java +++ b/acl/src/test/java/org/springframework/security/acls/jdbc/AclClassIdUtilsTest.java @@ -24,6 +24,7 @@ import org.mockito.junit.MockitoJUnitRunner; import org.springframework.core.convert.ConversionService; import java.io.Serializable; +import java.math.BigInteger; import java.sql.ResultSet; import java.sql.SQLException; import java.util.UUID; @@ -39,6 +40,7 @@ import static org.mockito.BDDMockito.given; public class AclClassIdUtilsTest { private static final Long DEFAULT_IDENTIFIER = 999L; + private static final BigInteger BIGINT_IDENTIFIER = new BigInteger("999"); private static final String DEFAULT_IDENTIFIER_AS_STRING = DEFAULT_IDENTIFIER.toString(); @Mock @@ -62,6 +64,15 @@ public class AclClassIdUtilsTest { assertThat(newIdentifier).isEqualTo(DEFAULT_IDENTIFIER); } + @Test + public void shouldReturnLongIfIdentifierIsBigInteger() throws SQLException { + // when + Serializable newIdentifier = aclClassIdUtils.identifierFrom(BIGINT_IDENTIFIER, resultSet); + + // then + assertThat(newIdentifier).isEqualTo(DEFAULT_IDENTIFIER); + } + @Test public void shouldReturnLongIfClassIdTypeIsNull() throws SQLException { // given