Skip to content

Commit 8399375

Browse files
dadikovirwinch
authored andcommitted
Object ID Identicy conversion to long fails on old schema
This change fixed a bug which tried to convert non-string object as string Fixes gh-7621
1 parent b6efd5b commit 8399375

File tree

2 files changed

+12
-1
lines changed

2 files changed

+12
-1
lines changed

acl/src/main/java/org/springframework/security/acls/jdbc/AclClassIdUtils.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -118,7 +118,7 @@ private <T extends Serializable> T convertFromStringTo(String identifier, Class<
118118
*/
119119
private Long convertToLong(Serializable identifier) {
120120
Long idAsLong;
121-
if (canConvertFromStringTo(Long.class)) {
121+
if (conversionService.canConvert(identifier.getClass(), Long.class)) {
122122
idAsLong = conversionService.convert(identifier, Long.class);
123123
} else {
124124
idAsLong = Long.valueOf(identifier.toString());

acl/src/test/java/org/springframework/security/acls/jdbc/AclClassIdUtilsTest.java

+11
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
import org.springframework.core.convert.ConversionService;
2525

2626
import java.io.Serializable;
27+
import java.math.BigInteger;
2728
import java.sql.ResultSet;
2829
import java.sql.SQLException;
2930
import java.util.UUID;
@@ -39,6 +40,7 @@
3940
public class AclClassIdUtilsTest {
4041

4142
private static final Long DEFAULT_IDENTIFIER = 999L;
43+
private static final BigInteger BIGINT_IDENTIFIER = new BigInteger("999");
4244
private static final String DEFAULT_IDENTIFIER_AS_STRING = DEFAULT_IDENTIFIER.toString();
4345

4446
@Mock
@@ -62,6 +64,15 @@ public void shouldReturnLongIfIdentifierIsLong() throws SQLException {
6264
assertThat(newIdentifier).isEqualTo(DEFAULT_IDENTIFIER);
6365
}
6466

67+
@Test
68+
public void shouldReturnLongIfIdentifierIsBigInteger() throws SQLException {
69+
// when
70+
Serializable newIdentifier = aclClassIdUtils.identifierFrom(BIGINT_IDENTIFIER, resultSet);
71+
72+
// then
73+
assertThat(newIdentifier).isEqualTo(DEFAULT_IDENTIFIER);
74+
}
75+
6576
@Test
6677
public void shouldReturnLongIfClassIdTypeIsNull() throws SQLException {
6778
// given

0 commit comments

Comments
 (0)