diff --git a/rm-server/config/alfresco/module/org_alfresco_module_rm/module-context.xml b/rm-server/config/alfresco/module/org_alfresco_module_rm/module-context.xml
index b5ab9c02d0..41d6b9855e 100644
--- a/rm-server/config/alfresco/module/org_alfresco_module_rm/module-context.xml
+++ b/rm-server/config/alfresco/module/org_alfresco_module_rm/module-context.xml
@@ -48,7 +48,7 @@
diff --git a/rm-server/config/alfresco/module/org_alfresco_module_rm/rm-model-context.xml b/rm-server/config/alfresco/module/org_alfresco_module_rm/rm-model-context.xml
index f12ed72a23..fb5c1a63b5 100644
--- a/rm-server/config/alfresco/module/org_alfresco_module_rm/rm-model-context.xml
+++ b/rm-server/config/alfresco/module/org_alfresco_module_rm/rm-model-context.xml
@@ -41,7 +41,7 @@
-
+
-
+
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 6b39d6389f..af625eeddf 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
@@ -439,10 +439,11 @@
-
-
-
-
+
+
+
+
+
diff --git a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/audit/AuthenticatedUserRolesDataExtractor.java b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/audit/AuthenticatedUserRolesDataExtractor.java
index 57ca95cd83..e13489d476 100644
--- a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/audit/AuthenticatedUserRolesDataExtractor.java
+++ b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/audit/AuthenticatedUserRolesDataExtractor.java
@@ -21,7 +21,7 @@ package org.alfresco.module.org_alfresco_module_rm.audit;
import java.io.Serializable;
import java.util.Set;
-import org.alfresco.module.org_alfresco_module_rm.RecordsManagementService;
+import org.alfresco.module.org_alfresco_module_rm.fileplan.FilePlanService;
import org.alfresco.module.org_alfresco_module_rm.model.RecordsManagementModel;
import org.alfresco.module.org_alfresco_module_rm.role.FilePlanRoleService;
import org.alfresco.module.org_alfresco_module_rm.role.Role;
@@ -41,7 +41,7 @@ import org.alfresco.service.cmr.repository.NodeService;
public final class AuthenticatedUserRolesDataExtractor extends AbstractDataExtractor
{
private NodeService nodeService;
- private RecordsManagementService rmService;
+ private FilePlanService filePlanService;
private FilePlanRoleService filePlanRoleService;
/**
@@ -53,11 +53,11 @@ public final class AuthenticatedUserRolesDataExtractor extends AbstractDataExtra
}
/**
- * Used to find the RM root
+ * @param filePlanService file plan service
*/
- public void setRmService(RecordsManagementService rmService)
+ public void setFilePlanService(FilePlanService filePlanService)
{
- this.rmService = rmService;
+ this.filePlanService = filePlanService;
}
/**
@@ -81,6 +81,9 @@ public final class AuthenticatedUserRolesDataExtractor extends AbstractDataExtra
return nodeService.hasAspect((NodeRef)data, RecordsManagementModel.ASPECT_FILE_PLAN_COMPONENT);
}
+ /**
+ * @see org.alfresco.repo.audit.extractor.DataExtractor#extractData(java.io.Serializable)
+ */
public Serializable extractData(Serializable value) throws Throwable
{
NodeRef nodeRef = (NodeRef) value;
@@ -92,7 +95,7 @@ public final class AuthenticatedUserRolesDataExtractor extends AbstractDataExtra
}
// Get the rm root
- NodeRef rmRootNodeRef = rmService.getFilePlan(nodeRef);
+ NodeRef rmRootNodeRef = filePlanService.getFilePlan(nodeRef);
Set roles = filePlanRoleService.getRolesByUser(rmRootNodeRef, user);
StringBuilder sb = new StringBuilder(100);
diff --git a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/capability/RMAfterInvocationProvider.java b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/capability/RMAfterInvocationProvider.java
index 4b7b0fd118..4117569fae 100644
--- a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/capability/RMAfterInvocationProvider.java
+++ b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/capability/RMAfterInvocationProvider.java
@@ -959,7 +959,7 @@ public class RMAfterInvocationProvider extends RMSecurityCommon
String uuid = DefaultTypeConverter.INSTANCE.convert(String.class, filtered.get(ContentModel.PROP_NODE_UUID));
StoreRef storeRef = new StoreRef(protocol, identifier);
NodeRef nodeRef = new NodeRef(storeRef, uuid);
- if ((nodeRef == null) || (permissionService.hasPermission(rmService.getFilePlan(nodeRef), RMPermissionModel.VIEW_UPDATE_REASONS_FOR_FREEZE) != AccessStatus.ALLOWED))
+ if ((nodeRef == null) || (permissionService.hasPermission(filePlanService.getFilePlan(nodeRef), RMPermissionModel.VIEW_UPDATE_REASONS_FOR_FREEZE) != AccessStatus.ALLOWED))
{
filtered.remove(RecordsManagementModel.PROP_HOLD_REASON);
}
diff --git a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/capability/RMSecurityCommon.java b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/capability/RMSecurityCommon.java
index c098cc4ed6..a02fc646d5 100644
--- a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/capability/RMSecurityCommon.java
+++ b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/capability/RMSecurityCommon.java
@@ -22,6 +22,8 @@ import net.sf.acegisecurity.vote.AccessDecisionVoter;
import org.alfresco.module.org_alfresco_module_rm.RecordsManagementService;
import org.alfresco.module.org_alfresco_module_rm.caveat.RMCaveatConfigComponent;
+import org.alfresco.module.org_alfresco_module_rm.fileplan.FilePlanService;
+import org.alfresco.module.org_alfresco_module_rm.record.RecordService;
import org.alfresco.repo.security.authentication.AuthenticationUtil;
import org.alfresco.repo.transaction.AlfrescoTransactionSupport;
import org.alfresco.service.cmr.repository.NodeRef;
@@ -32,6 +34,10 @@ import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
/**
+ * Common security functions.
+ *
+ * TODO move methods to the appropriate services
+ *
* @author Roy Wetherall
* @since 2.0
*/
@@ -41,10 +47,12 @@ public class RMSecurityCommon
private static Log logger = LogFactory.getLog(RMSecurityCommon.class);
+ /** Services */
protected NodeService nodeService;
protected PermissionService permissionService;
protected RecordsManagementService rmService;
protected RMCaveatConfigComponent caveatConfigComponent;
+ protected FilePlanService filePlanService;
public void setNodeService(NodeService nodeService)
{
@@ -66,6 +74,11 @@ public class RMSecurityCommon
this.caveatConfigComponent = caveatConfigComponent;
}
+ public void setFilePlanService(FilePlanService filePlanService)
+ {
+ this.filePlanService = filePlanService;
+ }
+
/**
*
* @param prefix
@@ -165,7 +178,7 @@ public class RMSecurityCommon
}
// Get the file plan for the node
- NodeRef filePlan = rmService.getFilePlan(nodeRef);
+ NodeRef filePlan = filePlanService.getFilePlan(nodeRef);
// Admin role
if (permissionService.hasPermission(filePlan, RMPermissionModel.ROLE_ADMINISTRATOR) == AccessStatus.ALLOWED)
@@ -208,5 +221,4 @@ public class RMSecurityCommon
}
}
-
}
diff --git a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/capability/declarative/DeclarativeCapability.java b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/capability/declarative/DeclarativeCapability.java
index 8b2950e029..43d17b4fbe 100644
--- a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/capability/declarative/DeclarativeCapability.java
+++ b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/capability/declarative/DeclarativeCapability.java
@@ -170,7 +170,7 @@ public class DeclarativeCapability extends AbstractCapability
protected boolean checkPermissionsImpl(NodeRef nodeRef, String ... permissions)
{
boolean result = true;
- NodeRef filePlan = rmService.getFilePlan(nodeRef);
+ NodeRef filePlan = filePlanService.getFilePlan(nodeRef);
for (String permission : permissions)
{
diff --git a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/capability/impl/CreateCapability.java b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/capability/impl/CreateCapability.java
index 9c00f2320c..f0e8868c16 100644
--- a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/capability/impl/CreateCapability.java
+++ b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/capability/impl/CreateCapability.java
@@ -122,7 +122,7 @@ public class CreateCapability extends DeclarativeCapability
{
if (rmService.isRecordFolder(destination))
{
- if (permissionService.hasPermission(rmService.getFilePlan(destination), RMPermissionModel.DECLARE_RECORDS_IN_CLOSED_FOLDERS) == AccessStatus.ALLOWED)
+ if (permissionService.hasPermission(filePlanService.getFilePlan(destination), RMPermissionModel.DECLARE_RECORDS_IN_CLOSED_FOLDERS) == AccessStatus.ALLOWED)
{
return AccessDecisionVoter.ACCESS_GRANTED;
}
@@ -135,7 +135,7 @@ public class CreateCapability extends DeclarativeCapability
{
if (rmService.isRecordFolder(destination))
{
- if (permissionService.hasPermission(rmService.getFilePlan(destination), RMPermissionModel.CREATE_MODIFY_RECORDS_IN_CUTOFF_FOLDERS) == AccessStatus.ALLOWED)
+ if (permissionService.hasPermission(filePlanService.getFilePlan(destination), RMPermissionModel.CREATE_MODIFY_RECORDS_IN_CUTOFF_FOLDERS) == AccessStatus.ALLOWED)
{
return AccessDecisionVoter.ACCESS_GRANTED;
}
diff --git a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/fileplan/FilePlanServiceImpl.java b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/fileplan/FilePlanServiceImpl.java
index fc23697dd9..68d2437b7e 100644
--- a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/fileplan/FilePlanServiceImpl.java
+++ b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/fileplan/FilePlanServiceImpl.java
@@ -66,21 +66,9 @@ public class FilePlanServiceImpl extends ServiceBaseImpl
/** RM site file plan container */
private static final String FILE_PLAN_CONTAINER = "documentLibrary";
- /** Services */
- private PermissionService permissionService;
-
/** Application context */
private ApplicationContext applicationContext;
- /** Node DAO */
- private NodeDAO nodeDAO;
-
- /** Internal node service */
- private NodeService internalNodeService;
-
- /** Site service */
- private SiteService siteService;
-
/**
* @see org.springframework.context.ApplicationContextAware#setApplicationContext(org.springframework.context.ApplicationContext)
*/
@@ -96,41 +84,29 @@ public class FilePlanServiceImpl extends ServiceBaseImpl
*
* @return file plan role service
*/
- public FilePlanRoleService getFilePlanRoleService()
+ protected FilePlanRoleService getFilePlanRoleService()
{
return (FilePlanRoleService)applicationContext.getBean("FilePlanRoleService");
}
- /**
- * @param permissionService permission service
- */
- public void setPermissionService(PermissionService permissionService)
+ protected PermissionService getPermissionService()
{
- this.permissionService = permissionService;
+ return (PermissionService)applicationContext.getBean("permissionService");
}
- /**
- * @param nodeDAO node DAO
- */
- public void setNodeDAO(NodeDAO nodeDAO)
+ protected NodeDAO getNodeDAO()
{
- this.nodeDAO = nodeDAO;
+ return (NodeDAO)applicationContext.getBean("nodeDAO");
}
- /**
- * @param internalNodeService node service (internal bean)
- */
- public void setInternalNodeService(NodeService internalNodeService)
+ protected NodeService getInternalNodeService()
{
- this.internalNodeService = internalNodeService;
+ return (NodeService)applicationContext.getBean("nodeService");
}
- /**
- * @param siteService site service
- */
- public void setSiteService(SiteService siteService)
+ protected SiteService getSiteService()
{
- this.siteService = siteService;
+ return (SiteService)applicationContext.getBean("SiteService");
}
/**
@@ -161,7 +137,7 @@ public class FilePlanServiceImpl extends ServiceBaseImpl
final Set results = new HashSet();
Set aspects = new HashSet(1);
aspects.add(ASPECT_RECORDS_MANAGEMENT_ROOT);
- nodeDAO.getNodesWithAspects(aspects, Long.MIN_VALUE, Long.MAX_VALUE, new NodeDAO.NodeRefQueryCallback()
+ getNodeDAO().getNodesWithAspects(aspects, Long.MIN_VALUE, Long.MAX_VALUE, new NodeDAO.NodeRefQueryCallback()
{
@Override
public boolean handle(Pair nodePair)
@@ -187,7 +163,7 @@ public class FilePlanServiceImpl extends ServiceBaseImpl
NodeRef result = null;
if (nodeRef != null)
{
- result = (NodeRef)internalNodeService.getProperty(nodeRef, PROP_ROOT_NODEREF);
+ result = (NodeRef)getInternalNodeService().getProperty(nodeRef, PROP_ROOT_NODEREF);
if (result == null)
{
if (instanceOf(nodeRef, TYPE_FILE_PLAN) == true)
@@ -196,7 +172,7 @@ public class FilePlanServiceImpl extends ServiceBaseImpl
}
else
{
- ChildAssociationRef parentAssocRef = internalNodeService.getPrimaryParent(nodeRef);
+ ChildAssociationRef parentAssocRef = getInternalNodeService().getPrimaryParent(nodeRef);
if (parentAssocRef != null)
{
result = getFilePlan(parentAssocRef.getParentRef());
@@ -216,12 +192,12 @@ public class FilePlanServiceImpl extends ServiceBaseImpl
{
NodeRef filePlan = null;
- SiteInfo siteInfo = siteService.getSite(siteId);
+ SiteInfo siteInfo = getSiteService().getSite(siteId);
if (siteInfo != null)
{
- if (siteService.hasContainer(siteId, FILE_PLAN_CONTAINER) == true)
+ if (getSiteService().hasContainer(siteId, FILE_PLAN_CONTAINER) == true)
{
- NodeRef nodeRef = siteService.getContainer(siteId, FILE_PLAN_CONTAINER);
+ NodeRef nodeRef = getSiteService().getContainer(siteId, FILE_PLAN_CONTAINER);
if (instanceOf(nodeRef, TYPE_FILE_PLAN) == true)
{
filePlan = nodeRef;
@@ -295,10 +271,10 @@ public class FilePlanServiceImpl extends ServiceBaseImpl
properties).getChildRef();
// set inheritance to false
- permissionService.setInheritParentPermissions(container, false);
- permissionService.setPermission(container, allRoles, RMPermissionModel.READ_RECORDS, true);
- permissionService.setPermission(container, ExtendedReaderDynamicAuthority.EXTENDED_READER, RMPermissionModel.READ_RECORDS, true);
- permissionService.setPermission(container, ExtendedWriterDynamicAuthority.EXTENDED_WRITER, RMPermissionModel.FILING, true);
+ getPermissionService().setInheritParentPermissions(container, false);
+ getPermissionService().setPermission(container, allRoles, RMPermissionModel.READ_RECORDS, true);
+ getPermissionService().setPermission(container, ExtendedReaderDynamicAuthority.EXTENDED_READER, RMPermissionModel.READ_RECORDS, true);
+ getPermissionService().setPermission(container, ExtendedWriterDynamicAuthority.EXTENDED_WRITER, RMPermissionModel.FILING, true);
// TODO set the admin users to have filing permissions on the unfiled container!!!
// TODO we will need to be able to get a list of the admin roles from the service
diff --git a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/model/behaviour/FilePlanComponentAspect.java b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/model/behaviour/FilePlanComponentAspect.java
index dae35c2349..8d19f6143c 100644
--- a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/model/behaviour/FilePlanComponentAspect.java
+++ b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/model/behaviour/FilePlanComponentAspect.java
@@ -21,7 +21,7 @@ package org.alfresco.module.org_alfresco_module_rm.model.behaviour;
import java.io.Serializable;
import java.util.Map;
-import org.alfresco.module.org_alfresco_module_rm.RecordsManagementService;
+import org.alfresco.module.org_alfresco_module_rm.fileplan.FilePlanService;
import org.alfresco.module.org_alfresco_module_rm.model.RecordsManagementModel;
import org.alfresco.repo.copy.AbstractCopyBehaviourCallback;
import org.alfresco.repo.copy.CopyBehaviourCallback;
@@ -50,12 +50,12 @@ public class FilePlanComponentAspect implements RecordsManagementModel,
/** Policy component */
private PolicyComponent policyComponent;
- /** Records Management Service */
- private RecordsManagementService recordsManagementService;
-
/** Node service */
private NodeService nodeService;
+ /** File plan service */
+ private FilePlanService filePlanService;
+
/**
* Set the policy component
* @param policyComponent policy component
@@ -65,15 +65,6 @@ public class FilePlanComponentAspect implements RecordsManagementModel,
this.policyComponent = policyComponent;
}
- /**
- * Set the records management service
- * @param recordsManagementService records management service
- */
- public void setRecordsManagementService(RecordsManagementService recordsManagementService)
- {
- this.recordsManagementService = recordsManagementService;
- }
-
/**
* Set node service
* @param nodeService node service
@@ -83,6 +74,14 @@ public class FilePlanComponentAspect implements RecordsManagementModel,
this.nodeService = nodeService;
}
+ /**
+ * @param filePlanService file plan service
+ */
+ public void setFilePlanService(FilePlanService filePlanService)
+ {
+ this.filePlanService = filePlanService;
+ }
+
/**
* Bean initialisation method
*/
@@ -116,7 +115,7 @@ public class FilePlanComponentAspect implements RecordsManagementModel,
if (nodeService.exists(nodeRef) == true)
{
// Look up the root and set on the aspect if found
- NodeRef root = recordsManagementService.getFilePlan(nodeRef);
+ NodeRef root = filePlanService.getFilePlan(nodeRef);
if (root != null)
{
nodeService.setProperty(nodeRef, PROP_ROOT_NODEREF, root);
@@ -143,7 +142,7 @@ public class FilePlanComponentAspect implements RecordsManagementModel,
nodeService.exists(newChildAssocRef.getChildRef()) == true)
{
// Look up the root and re-set the value currently stored on the aspect
- NodeRef root = recordsManagementService.getFilePlan(newChildAssocRef.getParentRef());
+ NodeRef root = filePlanService.getFilePlan(newChildAssocRef.getParentRef());
// NOTE: set the null value if no root found
nodeService.setProperty(newChildAssocRef.getChildRef(), PROP_ROOT_NODEREF, root);
}
@@ -185,7 +184,7 @@ public class FilePlanComponentAspect implements RecordsManagementModel,
Map properties)
{
// Only copy the root node reference if the new value can be looked up via the parent
- NodeRef root = recordsManagementService.getFilePlan(copyDetails.getTargetParentNodeRef());
+ NodeRef root = filePlanService.getFilePlan(copyDetails.getTargetParentNodeRef());
if (root != null)
{
properties.put(PROP_ROOT_NODEREF, root);
diff --git a/rm-server/test/java/org/alfresco/module/org_alfresco_module_rm/test/action/HideRecordActionTest.java b/rm-server/test/java/org/alfresco/module/org_alfresco_module_rm/test/action/HideRecordActionTest.java
index 700700a665..3b84c455ca 100644
--- a/rm-server/test/java/org/alfresco/module/org_alfresco_module_rm/test/action/HideRecordActionTest.java
+++ b/rm-server/test/java/org/alfresco/module/org_alfresco_module_rm/test/action/HideRecordActionTest.java
@@ -83,6 +83,7 @@ public class HideRecordActionTest extends BaseRMTestCase
// Create a record from that document
Action createAction = dmActionService.createAction(CreateRecordAction.NAME);
+ createAction.setParameterValue(CreateRecordAction.PARAM_FILE_PLAN, filePlan);
dmActionService.executeAction(createAction, doc);
// Check if the document is a record now