Allow use of non-numeric (e.g. UUID) values for ObjectIdentity.getIdentifier()
Prior to this commit, the ObjectIdentity id had to be a number. This commit allows for domain objects to use UUIDs as their identifier. The fully qualified class name of the identifier type can be specified in the acl_object_identity table and a ConversionService can be provided to BasicLookupStrategy to convert from String to the actual identifier type. There are the following other changes: - BasicLookupStrategy has a new property, aclClassIdSupported, which is used to retrieve the new column from the database. This preserves backwards-compatibility, as it is false by default. - JdbcMutableAclService has the same property, aclClassIdSupported, which is needed to modify the insert statement to write to the new column. Defaults to false for backwards-compatibility. - Tests have been updated to verify both the existing functionality for backwards-compatibility and the new functionality. Fixes gh-1224
This commit is contained in:
@@ -95,11 +95,12 @@ public class DataSourcePopulator implements InitializingBean {
|
||||
template.execute("CREATE TABLE ACL_CLASS("
|
||||
+ "ID BIGINT GENERATED BY DEFAULT AS IDENTITY(START WITH 100) NOT NULL PRIMARY KEY,"
|
||||
+ "CLASS VARCHAR_IGNORECASE(100) NOT NULL,"
|
||||
+ "CLASS_ID_TYPE VARCHAR_IGNORECASE(100),"
|
||||
+ "CONSTRAINT UNIQUE_UK_2 UNIQUE(CLASS));");
|
||||
template.execute("CREATE TABLE ACL_OBJECT_IDENTITY("
|
||||
+ "ID BIGINT GENERATED BY DEFAULT AS IDENTITY(START WITH 100) NOT NULL PRIMARY KEY,"
|
||||
+ "OBJECT_ID_CLASS BIGINT NOT NULL,"
|
||||
+ "OBJECT_ID_IDENTITY BIGINT NOT NULL,"
|
||||
+ "OBJECT_ID_IDENTITY VARCHAR_IGNORECASE(36) NOT NULL,"
|
||||
+ "PARENT_OBJECT BIGINT,"
|
||||
+ "OWNER_SID BIGINT,"
|
||||
+ "ENTRIES_INHERITING BOOLEAN NOT NULL,"
|
||||
|
||||
Reference in New Issue
Block a user