diff --git a/rm-community/rm-community-repo/source/java/org/alfresco/module/org_alfresco_module_rm/util/PropertyModificationAllowedCheck.java b/rm-community/rm-community-repo/source/java/org/alfresco/module/org_alfresco_module_rm/util/PropertyModificationAllowedCheck.java index 52c7f956dd..b1d90afa65 100644 --- a/rm-community/rm-community-repo/source/java/org/alfresco/module/org_alfresco_module_rm/util/PropertyModificationAllowedCheck.java +++ b/rm-community/rm-community-repo/source/java/org/alfresco/module/org_alfresco_module_rm/util/PropertyModificationAllowedCheck.java @@ -95,7 +95,7 @@ public class PropertyModificationAllowedCheck if (!before.containsKey(key) || !after.containsKey(key)) { //Property modified check to see if allowed - proceed = whiteList.contains(key); + proceed = allowPropertyUpdate(key); if (!proceed) { break; @@ -106,7 +106,7 @@ public class PropertyModificationAllowedCheck (after.get(key) == null && before.get(key) != null)) { //Property modified check to see if allowed - proceed = whiteList.contains(key); + proceed = allowPropertyUpdate(key); if (!proceed) { break; @@ -116,7 +116,7 @@ public class PropertyModificationAllowedCheck if (before.get(key) != null && after.get(key) != null && !(after.get(key).equals(before.get(key)))) { //Property modified check to see if allowed - proceed = whiteList.contains(key) || getEditableURIs().contains(key.getNamespaceURI()); + proceed = allowPropertyUpdate(key); if (!proceed) { break; @@ -126,5 +126,14 @@ public class PropertyModificationAllowedCheck return proceed; } + /** + * Determines whether the property should be allowed to be updated or not. + * @param key property + * @return true if property update us allowed + */ + private boolean allowPropertyUpdate(QName key) + { + return whiteList.contains(key) || getEditableURIs().contains(key.getNamespaceURI()); + } } diff --git a/rm-community/rm-community-repo/unit-test/java/org/alfresco/module/org_alfresco_module_rm/util/PropertyModificationAllowedCheckUnitTest.java b/rm-community/rm-community-repo/unit-test/java/org/alfresco/module/org_alfresco_module_rm/util/PropertyModificationAllowedCheckUnitTest.java index 3cb5e89c0d..fca0a8b9cb 100644 --- a/rm-community/rm-community-repo/unit-test/java/org/alfresco/module/org_alfresco_module_rm/util/PropertyModificationAllowedCheckUnitTest.java +++ b/rm-community/rm-community-repo/unit-test/java/org/alfresco/module/org_alfresco_module_rm/util/PropertyModificationAllowedCheckUnitTest.java @@ -236,4 +236,26 @@ public class PropertyModificationAllowedCheckUnitTest after.put(qName, null); assertTrue(propertyModificationAllowedCheck.check(before, after)); } + + /** + * Test update of a property from the model URI for which properties can be updated + */ + @Test + public void testUpdatePropertyFromAllowedModelURI() + { + editableURIs.add("foo"); + propertyModificationAllowedCheck.setEditableURIs(editableURIs); + assertTrue(propertyModificationAllowedCheck.check(before, after)); + } + + /** + * Test update of a property that is not in the model URI for which properties can be updated + */ + @Test + public void testUpdatePropertyFromNotAllowedModelURI() + { + editableURIs.add("bar"); + propertyModificationAllowedCheck.setEditableURIs(editableURIs); + assertFalse(propertyModificationAllowedCheck.check(before, after)); + } }