diff --git a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/patch/RMv21InPlacePatch.java b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/patch/RMv21InPlacePatch.java index 79f2eb2a43..8a5840561d 100644 --- a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/patch/RMv21InPlacePatch.java +++ b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/patch/RMv21InPlacePatch.java @@ -122,7 +122,7 @@ public class RMv21InPlacePatch extends AbstractModuleComponent // set capabilities permissionService.setPermission(filePlan, ExtendedReaderDynamicAuthority.EXTENDED_READER, RMPermissionModel.VIEW_RECORDS, true); - permissionService.setPermission(filePlan, ExtendedReaderDynamicAuthority.EXTENDED_READER, RMPermissionModel.EDIT_RECORD_METADATA, true); + permissionService.setPermission(filePlan, ExtendedReaderDynamicAuthority.EXTENDED_READER, RMPermissionModel.EDIT_NON_RECORD_METADATA, true); // create unfiled container filePlanService.createUnfiledContainer(filePlan); diff --git a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/record/RecordServiceImpl.java b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/record/RecordServiceImpl.java index f472f555de..9782c0099d 100644 --- a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/record/RecordServiceImpl.java +++ b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/record/RecordServiceImpl.java @@ -343,8 +343,21 @@ public class RecordServiceImpl implements RecordService, { afterValue = after.get(property); } + + boolean propertyUnchanged = false; + if (beforeValue != null && afterValue != null && + beforeValue instanceof Date && afterValue instanceof Date) + { + // deal with date values + propertyUnchanged = (((Date)beforeValue).compareTo((Date)afterValue) == 0); + } + else + { + // otherwise + propertyUnchanged = EqualsHelper.nullSafeEquals(beforeValue, afterValue); + } - if (EqualsHelper.nullSafeEquals(beforeValue, afterValue) == false && + if (propertyUnchanged == false && isPropertyEditable(nodeRef, property) == false) { // the user can't edit the record property diff --git a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/role/FilePlanRoleServiceImpl.java b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/role/FilePlanRoleServiceImpl.java index e99c0e2cb5..2ca710a788 100644 --- a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/role/FilePlanRoleServiceImpl.java +++ b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/role/FilePlanRoleServiceImpl.java @@ -194,7 +194,7 @@ public class FilePlanRoleServiceImpl implements FilePlanRoleService, // set the capabilities permissionService.setPermission(rmRootNode, ExtendedReaderDynamicAuthority.EXTENDED_READER, RMPermissionModel.VIEW_RECORDS, true); - permissionService.setPermission(rmRootNode, ExtendedReaderDynamicAuthority.EXTENDED_READER, RMPermissionModel.EDIT_RECORD_METADATA, true); + permissionService.setPermission(rmRootNode, ExtendedReaderDynamicAuthority.EXTENDED_READER, RMPermissionModel.EDIT_NON_RECORD_METADATA, true); // Create the unfiled record container return filePlanService.createUnfiledContainer(rmRootNode); diff --git a/rm-server/test/java/org/alfresco/module/org_alfresco_module_rm/test/service/RecordServiceImplTest.java b/rm-server/test/java/org/alfresco/module/org_alfresco_module_rm/test/service/RecordServiceImplTest.java index 141d704655..615a54dc9e 100644 --- a/rm-server/test/java/org/alfresco/module/org_alfresco_module_rm/test/service/RecordServiceImplTest.java +++ b/rm-server/test/java/org/alfresco/module/org_alfresco_module_rm/test/service/RecordServiceImplTest.java @@ -270,12 +270,12 @@ public class RecordServiceImplTest extends BaseRMTestCase assertEquals(AccessStatus.ALLOWED, permissionService.hasPermission(filePlan, RMPermissionModel.VIEW_RECORDS)); assertEquals(AccessStatus.ALLOWED, permissionService.hasPermission(filePlan, - RMPermissionModel.EDIT_RECORD_METADATA)); + RMPermissionModel.EDIT_NON_RECORD_METADATA)); Capability filling = capabilityService.getCapability("FileRecords"); assertEquals(AccessStatus.DENIED, filling.hasPermission(dmDocument)); - Capability editRecordMetadata = capabilityService.getCapability("EditRecordMetadata"); + Capability editRecordMetadata = capabilityService.getCapability("EditNonRecordMetadata"); assertEquals(AccessStatus.ALLOWED, editRecordMetadata.hasPermission(dmDocument)); Capability updateProperties = capabilityService.getCapability("UpdateProperties"); @@ -308,12 +308,12 @@ public class RecordServiceImplTest extends BaseRMTestCase assertEquals(AccessStatus.ALLOWED, permissionService.hasPermission(filePlan, RMPermissionModel.VIEW_RECORDS)); assertEquals(AccessStatus.ALLOWED, permissionService.hasPermission(filePlan, - RMPermissionModel.EDIT_RECORD_METADATA)); + RMPermissionModel.EDIT_NON_RECORD_METADATA)); Capability filling = capabilityService.getCapability("FileRecords"); assertEquals(AccessStatus.DENIED, filling.hasPermission(dmDocument)); - Capability editRecordMetadata = capabilityService.getCapability("EditRecordMetadata"); + Capability editRecordMetadata = capabilityService.getCapability("EditNonRecordMetadata"); assertEquals(AccessStatus.DENIED, editRecordMetadata.hasPermission(dmDocument)); Capability updateProperties = capabilityService.getCapability("UpdateProperties");