diff --git a/rm-server/config/alfresco/module/org_alfresco_module_rm/rm-service-context.xml b/rm-server/config/alfresco/module/org_alfresco_module_rm/rm-service-context.xml
index 6a0a0f7922..4e1382c967 100644
--- a/rm-server/config/alfresco/module/org_alfresco_module_rm/rm-service-context.xml
+++ b/rm-server/config/alfresco/module/org_alfresco_module_rm/rm-service-context.xml
@@ -448,6 +448,7 @@
+
diff --git a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/security/FilePlanPermissionServiceImpl.java b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/security/FilePlanPermissionServiceImpl.java
index de661acafc..82e9388d28 100644
--- a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/security/FilePlanPermissionServiceImpl.java
+++ b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/security/FilePlanPermissionServiceImpl.java
@@ -32,6 +32,7 @@ import java.util.Set;
import org.alfresco.error.AlfrescoRuntimeException;
import org.alfresco.module.org_alfresco_module_rm.capability.RMPermissionModel;
+import org.alfresco.module.org_alfresco_module_rm.role.FilePlanRoleService;
import org.alfresco.module.org_alfresco_module_rm.util.ServiceBaseImpl;
import org.alfresco.repo.node.NodeServicePolicies;
import org.alfresco.repo.policy.JavaBehaviour;
@@ -42,6 +43,8 @@ import org.alfresco.repo.security.authentication.AuthenticationUtil;
import org.alfresco.service.cmr.repository.ChildAssociationRef;
import org.alfresco.service.cmr.repository.NodeRef;
import org.alfresco.service.cmr.security.AccessPermission;
+import org.alfresco.service.cmr.security.AuthorityService;
+import org.alfresco.service.cmr.security.AuthorityType;
import org.alfresco.service.cmr.security.OwnableService;
import org.alfresco.service.cmr.security.PermissionService;
import org.alfresco.service.namespace.QName;
@@ -69,6 +72,9 @@ public class FilePlanPermissionServiceImpl extends ServiceBaseImpl
/** Policy component */
private PolicyComponent policyComponent;
+ /** Authority service */
+ private AuthorityService authorityService;
+
/** Logger */
private static final Log LOGGER = LogFactory.getLog(FilePlanPermissionServiceImpl.class);
@@ -141,6 +147,26 @@ public class FilePlanPermissionServiceImpl extends ServiceBaseImpl
this.ownableService = ownableService;
}
+ /**
+ * Gets the authority service
+ *
+ * @return The authority service
+ */
+ public AuthorityService getAuthorityService()
+ {
+ return this.authorityService;
+ }
+
+ /**
+ * Sets the authority service
+ *
+ * @param authorityService The authority service
+ */
+ public void setAuthorityService(AuthorityService authorityService)
+ {
+ this.authorityService = authorityService;
+ }
+
/**
* @see org.alfresco.module.org_alfresco_module_rm.security.FilePlanPermissionService#setupRecordCategoryPermissions(org.alfresco.service.cmr.repository.NodeRef)
*/
@@ -259,9 +285,10 @@ public class FilePlanPermissionServiceImpl extends ServiceBaseImpl
if (!inheritanceAllowed)
{
- // set extended reader permissions
getPermissionService().setPermission(nodeRef, EXTENDED_READER, READ_RECORDS, true);
getPermissionService().setPermission(nodeRef, EXTENDED_WRITER, FILING, true);
+ String adminRole = getAdminRole(nodeRef);
+ getPermissionService().setPermission(nodeRef, adminRole, RMPermissionModel.FILING, true);
}
// remove owner
@@ -273,6 +300,16 @@ public class FilePlanPermissionServiceImpl extends ServiceBaseImpl
}
}
+ private String getAdminRole(NodeRef nodeRef)
+ {
+ NodeRef filePlan = getFilePlan(nodeRef);
+ if (filePlan == null)
+ {
+ throw new AlfrescoRuntimeException("The file plan could not be found for the give node: '" + nodeRef + "'.");
+ }
+ return authorityService.getName(AuthorityType.GROUP, FilePlanRoleService.ROLE_ADMIN + filePlan.getId());
+ }
+
private boolean isInheritanceAllowed(NodeRef nodeRef, Boolean isParentNodeFilePlan)
{
return !(isFilePlan(nodeRef) || isTransfer(nodeRef) || isHold(nodeRef) || isUnfiledRecordsContainer(nodeRef) || (isRecordCategory(nodeRef) && isTrue(isParentNodeFilePlan)));
diff --git a/rm-server/test/java/org/alfresco/module/org_alfresco_module_rm/test/legacy/service/FilePlanPermissionServiceImplTest.java b/rm-server/test/java/org/alfresco/module/org_alfresco_module_rm/test/legacy/service/FilePlanPermissionServiceImplTest.java
index eccdc9b5cf..7929c67cca 100644
--- a/rm-server/test/java/org/alfresco/module/org_alfresco_module_rm/test/legacy/service/FilePlanPermissionServiceImplTest.java
+++ b/rm-server/test/java/org/alfresco/module/org_alfresco_module_rm/test/legacy/service/FilePlanPermissionServiceImplTest.java
@@ -31,6 +31,7 @@ import org.alfresco.repo.security.authentication.AuthenticationUtil;
import org.alfresco.service.cmr.repository.NodeRef;
import org.alfresco.service.cmr.security.AccessPermission;
import org.alfresco.service.cmr.security.AccessStatus;
+import org.alfresco.service.cmr.security.AuthorityType;
import org.springframework.extensions.webscripts.GUID;
/**
@@ -1235,11 +1236,8 @@ public class FilePlanPermissionServiceImplTest extends BaseRMTestCase
assertEquals(RMPermissionModel.READ_RECORDS, accessPermissions.get(ExtendedReaderDynamicAuthority.EXTENDED_READER));
assertTrue(accessPermissions.containsKey(ExtendedWriterDynamicAuthority.EXTENDED_WRITER));
assertEquals(RMPermissionModel.FILING, accessPermissions.get(ExtendedWriterDynamicAuthority.EXTENDED_WRITER));
- // FIXME!!!
- /*
- String allRoles = authorityService.getName(AuthorityType.GROUP, FilePlanRoleService.ROLE_ADMIN + filePlan.getId());
- assertTrue(accessPermissions.containsKey(allRoles));
- assertEquals(RMPermissionModel.FILING, accessPermissions.get(allRoles));
- */
+ String adminRole = authorityService.getName(AuthorityType.GROUP, FilePlanRoleService.ROLE_ADMIN + filePlan.getId());
+ assertTrue(accessPermissions.containsKey(adminRole));
+ assertEquals(RMPermissionModel.FILING, accessPermissions.get(adminRole));
}
}
diff --git a/rm-server/unit-test/java/org/alfresco/module/org_alfresco_module_rm/record/RecordServiceImplUnitTest.java b/rm-server/unit-test/java/org/alfresco/module/org_alfresco_module_rm/record/RecordServiceImplUnitTest.java
index 529d5fffd1..bfeaf13b69 100755
--- a/rm-server/unit-test/java/org/alfresco/module/org_alfresco_module_rm/record/RecordServiceImplUnitTest.java
+++ b/rm-server/unit-test/java/org/alfresco/module/org_alfresco_module_rm/record/RecordServiceImplUnitTest.java
@@ -47,8 +47,6 @@ public class RecordServiceImplUnitTest extends BaseUnitTest
private static QName TYPE_MY_FILE_PLAN = generateQName();
private static QName ASPECT_FOR_FILE_PLAN = generateQName();
- //private static QName ASPECT_FOR_MY_FILE_PLAN = generateQName();
- //private static QName ASPECT_FOR_BOTH = generateQName();
@InjectMocks private RecordServiceImpl recordService;
@@ -83,39 +81,4 @@ public class RecordServiceImplUnitTest extends BaseUnitTest
assertEquals(1, types.size());
assertTrue(types.contains(TYPE_FILE_PLAN));
}
-
- @Test
- public void testGetRecordMetadataAspects()
- {
-// // register a couple of record meta-data aspects
-// recordService.registerRecordMetadataAspect(ASPECT_FOR_FILE_PLAN, TYPE_FILE_PLAN);
-// recordService.registerRecordMetadataAspect(ASPECT_FOR_MY_FILE_PLAN, TYPE_MY_FILE_PLAN);
-// recordService.registerRecordMetadataAspect(ASPECT_FOR_BOTH, TYPE_FILE_PLAN);
-// recordService.registerRecordMetadataAspect(ASPECT_FOR_BOTH, TYPE_MY_FILE_PLAN);
-//
-// Set set = recordService.getRecordMetadataAspects(filePlanComponent);
-// assertNotNull(set);
-// assertEquals(2, set.size());
-// assertTrue(set.contains(ASPECT_FOR_FILE_PLAN));
-// assertTrue(set.contains(ASPECT_FOR_BOTH));
-//
-// set = recordService.getRecordMetadataAspects(nonStandardFilePlanComponent);
-// assertNotNull(set);
-// assertEquals(2, set.size());
-// assertTrue(set.contains(ASPECT_FOR_MY_FILE_PLAN));
-// assertTrue(set.contains(ASPECT_FOR_BOTH));
-//
-// set = recordService.getRecordMetadataAspects(TYPE_FILE_PLAN);
-// assertNotNull(set);
-// assertEquals(2, set.size());
-// assertTrue(set.contains(ASPECT_FOR_FILE_PLAN));
-// assertTrue(set.contains(ASPECT_FOR_BOTH));
-//
-// set = recordService.getRecordMetadataAspects(TYPE_MY_FILE_PLAN);
-// assertNotNull(set);
-// assertEquals(2, set.size());
-// assertTrue(set.contains(ASPECT_FOR_MY_FILE_PLAN));
-// assertTrue(set.contains(ASPECT_FOR_BOTH));
-
- }
}