RM: Fix unit test

* ensure file plan param is provided to create record action
  * deal with some of the depreaction warnings from recent changes



git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/modules/recordsmanagement/HEAD@48441 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
Roy Wetherall
2013-03-21 07:37:20 +00:00
parent 096c74aaa9
commit cef10a210c
12 changed files with 70 additions and 78 deletions

View File

@@ -48,7 +48,7 @@
<bean id="org_alfresco_module_rm_userRolesExtractor" class="org.alfresco.module.org_alfresco_module_rm.audit.AuthenticatedUserRolesDataExtractor">
<property name="registry" ref="auditModel.extractorRegistry" />
<property name="nodeService" ref="nodeService" />
<property name="rmService" ref="recordsManagementService" />
<property name="filePlanService" ref="filePlanService" />
<property name="filePlanRoleService" ref="filePlanRoleService" />
</bean>

View File

@@ -41,7 +41,7 @@
<bean id="org_alfresco_module_rm_FilePlanComponentAspect"
class="org.alfresco.module.org_alfresco_module_rm.model.behaviour.FilePlanComponentAspect"
parent="org_alfresco_module_rm_BaseBehaviour">
<property name="recordsManagementService" ref="recordsManagementService"/>
<property name="filePlanService" ref="filePlanService"/>
</bean>
<bean id="org_alfresco_module_rm_ScheduledAspect"

View File

@@ -48,7 +48,7 @@
<property name="permissionService" ref="permissionService"/>
<property name="recordsManagementService" ref="recordsManagementService"/>
<property name="caveatConfigComponent" ref="caveatConfigComponent"/>
<!-- <property name="recordService" ref="recordService"/> -->
<property name="filePlanService" ref="filePlanService"/>
</bean>
<!-- ====== -->

View File

@@ -439,10 +439,11 @@
<bean id="filePlanService"
parent="baseService"
class="org.alfresco.module.org_alfresco_module_rm.fileplan.FilePlanServiceImpl">
<property name="permissionService" ref="PermissionService"/>
<property name="nodeDAO" ref="nodeDAO"/>
<property name="internalNodeService" ref="nodeService"/>
<property name="siteService" ref="SiteService" />
<!-- NOTE: for some reason we need to grab these references within the class to avoid cyclic Spring issues! -->
<!-- <property name="permissionService" ref="permissionService"/> -->
<!-- <property name="nodeDAO" ref="nodeDAO"/> -->
<!-- <property name="internalNodeService" ref="nodeService"/> -->
<!-- <property name="siteService" ref="SiteService" /> -->
</bean>
<bean id="FilePlanService" class="org.springframework.aop.framework.ProxyFactoryBean">

View File

@@ -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<Role> roles = filePlanRoleService.getRolesByUser(rmRootNodeRef, user);
StringBuilder sb = new StringBuilder(100);

View File

@@ -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);
}

View File

@@ -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
}
}
}

View File

@@ -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)
{

View File

@@ -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;
}

View File

@@ -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<NodeRef> results = new HashSet<NodeRef>();
Set<QName> aspects = new HashSet<QName>(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<Long, NodeRef> 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

View File

@@ -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<QName, Serializable> 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);

View File

@@ -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