RM-4619 - added the fileplan component check back but in different place

This commit is contained in:
Ana Bozianu
2017-01-30 12:54:37 +02:00
parent c52e2a7cf5
commit abfc606428
6 changed files with 48 additions and 25 deletions

View File

@@ -93,7 +93,8 @@
<bean id="records" class="org.alfresco.rm.rest.api.impl.RecordsImpl">
<property name="recordService" ref="RecordService"/>
<property name="filePlanService" ref="FilePlanService"/>
<property name="nodes" ref="rm.nodes"/>
<property name="rmNodes" ref="rm.nodes"/>
<property name="nodes" ref="nodes"/>
<property name="nodeService" ref="NodeService"/>
<property name="fileFolderService" ref="FileFolderService"/>
<property name="dictionaryService" ref="DictionaryService"/>

View File

@@ -61,6 +61,7 @@ import org.alfresco.service.cmr.dictionary.DictionaryService;
import org.alfresco.service.cmr.model.FileFolderService;
import org.alfresco.service.cmr.repository.NodeRef;
import org.alfresco.service.cmr.repository.NodeService;
import org.alfresco.service.cmr.repository.StoreRef;
import org.alfresco.service.namespace.QName;
import org.alfresco.util.Pair;
import org.alfresco.util.ParameterCheck;
@@ -277,6 +278,11 @@ public class RMNodesImpl extends NodesImpl implements RMNodes
}
}
if(!filePlanService.isFilePlanComponent(new NodeRef(StoreRef.STORE_REF_WORKSPACE_SPACESSTORE, nodeId)))
{
throw new InvalidParameterException("The provided node is not a fileplan component");
}
return super.validateNode(nodeId);
}

View File

@@ -36,6 +36,7 @@ import org.alfresco.module.org_alfresco_module_rm.record.RecordService;
import org.alfresco.module.org_alfresco_module_rm.util.AuthenticationUtil;
import org.alfresco.repo.node.integrity.IntegrityException;
import org.alfresco.repo.security.authentication.AuthenticationUtil.RunAsWork;
import org.alfresco.rest.api.Nodes;
import org.alfresco.rest.api.model.Node;
import org.alfresco.rest.framework.core.exceptions.InvalidArgumentException;
import org.alfresco.rest.framework.resource.parameters.Parameters;
@@ -67,7 +68,8 @@ public class RecordsImpl implements Records, InitializingBean
protected FileFolderService fileFolderService;
protected DictionaryService dictionaryService;
protected AuthenticationUtil authenticationUtil;
protected RMNodes nodes;
protected RMNodes rmNodes;
protected Nodes nodes;
public void setRecordService(RecordService recordService)
{
@@ -99,7 +101,12 @@ public class RecordsImpl implements Records, InitializingBean
this.authenticationUtil = authenticationUtil;
}
public void setNodes(RMNodes nodes)
public void setRmNodes(RMNodes rmNodes)
{
this.rmNodes = rmNodes;
}
public void setNodes(Nodes nodes)
{
this.nodes = nodes;
}
@@ -108,6 +115,7 @@ public class RecordsImpl implements Records, InitializingBean
public Node declareFileAsRecord(String fileId, Parameters parameters)
{
// Get file to be declared
// Use nodes instead of rmNodes because the file is not a record yet
NodeRef fileNodeRef = nodes.validateNode(fileId) ;
// Get fileplan
@@ -127,7 +135,7 @@ public class RecordsImpl implements Records, InitializingBean
recordService.createRecord(filePlan, fileNodeRef, !hideRecord);
// Get information about the new record
return nodes.getFolderOrDocument(fileId, parameters);
return rmNodes.getFolderOrDocument(fileId, parameters);
}
@Override
@@ -139,7 +147,7 @@ public class RecordsImpl implements Records, InitializingBean
}
// Get record
NodeRef record = nodes.validateNode(recordId);
NodeRef record = rmNodes.validateNode(recordId);
// Get record folder to file/link the record to
String parentContainerId = target.getTargetParentId();
@@ -155,7 +163,7 @@ public class RecordsImpl implements Records, InitializingBean
}
});
}
NodeRef parentRecordFolder = nodes.getOrCreatePath(parentContainerId, target.getRelativePath(), ContentModel.TYPE_CONTENT);
NodeRef parentRecordFolder = rmNodes.getOrCreatePath(parentContainerId, target.getRelativePath(), ContentModel.TYPE_CONTENT);
// Check if the target is a record folder
if(!dictionaryService.isSubClass(nodeService.getType(parentRecordFolder), RecordsManagementModel.TYPE_RECORD_FOLDER))
@@ -186,7 +194,7 @@ public class RecordsImpl implements Records, InitializingBean
}
// Get the record info
return nodes.getFolderOrDocument(recordId, parameters);
return rmNodes.getFolderOrDocument(recordId, parameters);
}
@Override
@@ -194,7 +202,7 @@ public class RecordsImpl implements Records, InitializingBean
{
ParameterCheck.mandatory("recordService", recordService);
ParameterCheck.mandatory("filePlanService", filePlanService);
ParameterCheck.mandatory("nodes", nodes);
ParameterCheck.mandatory("nodes", rmNodes);
ParameterCheck.mandatory("nodeService", nodeService);
ParameterCheck.mandatory("fileFolderService", fileFolderService);
ParameterCheck.mandatory("dictionaryService", dictionaryService);

View File

@@ -85,6 +85,7 @@ public class RMNodesImplRelativePathUnitTest extends BaseUnitTest
* Given any parent node
*/
NodeRef parentNode = AlfMock.generateNodeRef(mockedNodeService);
when(mockedFilePlanService.isFilePlanComponent(parentNode)).thenReturn(true);
/*
* When trying to create a node in the parent node with no relative path
@@ -112,6 +113,7 @@ public class RMNodesImplRelativePathUnitTest extends BaseUnitTest
* Given a parent node and an existing path c1/f1 under it
*/
NodeRef parentNode = AlfMock.generateNodeRef(mockedNodeService);
when(mockedFilePlanService.isFilePlanComponent(parentNode)).thenReturn(true);
String category = "c1";
NodeRef categoryNode = AlfMock.generateNodeRef(mockedNodeService);
@@ -154,6 +156,7 @@ public class RMNodesImplRelativePathUnitTest extends BaseUnitTest
String category1 = "c1";
NodeRef categoryNode1 = AlfMock.generateNodeRef(mockedNodeService);
when(mockedNodeService.getChildByName(fileplanNodeRef, ContentModel.ASSOC_CONTAINS, category1)).thenReturn(categoryNode1);
when(mockedFilePlanService.isFilePlanComponent(fileplanNodeRef)).thenReturn(true);
// create c2
String category2 = "c2";
@@ -200,6 +203,7 @@ public class RMNodesImplRelativePathUnitTest extends BaseUnitTest
*/
NodeRef unfiledRecordContainer = AlfMock.generateNodeRef(mockedNodeService);
when(mockedNodeService.getType(unfiledRecordContainer)).thenReturn(TYPE_UNFILED_RECORD_CONTAINER);
when(mockedFilePlanService.isFilePlanComponent(unfiledRecordContainer)).thenReturn(true);
/*
* When trying to create a content node in the relative path f1/f2/f3
@@ -255,6 +259,7 @@ public class RMNodesImplRelativePathUnitTest extends BaseUnitTest
*/
NodeRef fileplanNodeRef = AlfMock.generateNodeRef(mockedNodeService);
when(mockedNodeService.getType(fileplanNodeRef)).thenReturn(TYPE_FILE_PLAN);
when(mockedFilePlanService.isFilePlanComponent(fileplanNodeRef)).thenReturn(true);
/*
* When trying to create a folder node in the relative path c1/c2/c3

View File

@@ -318,10 +318,9 @@ public class RMNodesImplUnitTest extends BaseUnitTest
setupCompanyHomeAndPrimaryParent(nodeRef);
when(mockedFilePlanService.isFilePlanComponent(nodeRef)).thenReturn(false);
List<String> includeParamList = new ArrayList<String>();
try
{
rmNodesImpl.getFolderOrDocument(nodeRef, null, null, includeParamList, null);
rmNodesImpl.validateNode(nodeRef.getId());
fail("Expected exception since the requested node is not a fileplan component.");
}
catch(InvalidParameterException ex)
@@ -628,6 +627,7 @@ public class RMNodesImplUnitTest extends BaseUnitTest
public void testValidateNode() throws Exception
{
NodeRef nodeRef = AlfMock.generateNodeRef(mockedNodeService);
when(mockedFilePlanService.isFilePlanComponent(nodeRef)).thenReturn(true);
NodeRef validateOrLookupNode = rmNodesImpl.validateNode(nodeRef.getId());
assertEquals(nodeRef, validateOrLookupNode);
}

View File

@@ -40,6 +40,7 @@ import org.alfresco.module.org_alfresco_module_rm.record.RecordService;
import org.alfresco.module.org_alfresco_module_rm.test.util.AlfMock;
import org.alfresco.module.org_alfresco_module_rm.test.util.MockAuthenticationUtilHelper;
import org.alfresco.module.org_alfresco_module_rm.util.AuthenticationUtil;
import org.alfresco.rest.api.Nodes;
import org.alfresco.rest.framework.resource.parameters.Parameters;
import org.alfresco.rm.rest.api.RMNodes;
import org.alfresco.rm.rest.api.Records;
@@ -77,7 +78,9 @@ public class RecordsImplUnitTest
@Mock
protected AuthenticationUtil mockedAuthenticationUtil;
@Mock
protected RMNodes mockedNodes;
protected RMNodes mockedRMNodes;
@Mock
protected Nodes mockedNodes;
@InjectMocks
private RecordsImpl recordsImpl;
@@ -119,7 +122,7 @@ public class RecordsImplUnitTest
* Then a record is created under the existing fileplan from the provided file
*/
verify(mockedRecordService).createRecord(fileplan, mockedFile, false);
verify(mockedNodes).getFolderOrDocument(mockedFile.getId(), params);
verify(mockedRMNodes).getFolderOrDocument(mockedFile.getId(), params);
}
/**
@@ -134,7 +137,7 @@ public class RecordsImplUnitTest
* Given a record
*/
NodeRef mockedRecord = AlfMock.generateNodeRef(mockedNodeService);
when(mockedNodes.validateNode(mockedRecord.getId())).thenReturn(mockedRecord);
when(mockedRMNodes.validateNode(mockedRecord.getId())).thenReturn(mockedRecord);
/*
* When trying to filing a record providing a blank destination path
@@ -157,7 +160,7 @@ public class RecordsImplUnitTest
*/
// mock the record to file
NodeRef mockedRecord = AlfMock.generateNodeRef(mockedNodeService);
when(mockedNodes.validateNode(mockedRecord.getId())).thenReturn(mockedRecord);
when(mockedRMNodes.validateNode(mockedRecord.getId())).thenReturn(mockedRecord);
// mock the current primary parent
NodeRef mockedPrimaryParent = AlfMock.generateNodeRef(mockedNodeService);
@@ -169,7 +172,7 @@ public class RecordsImplUnitTest
// mock the target record folder to file the record into
NodeRef mockedTargetRecordFolder = AlfMock.generateNodeRef(mockedNodeService);
when(mockedNodes.getOrCreatePath(mockedTargetRecordFolder.getId(), null, TYPE_CONTENT)).thenReturn(mockedTargetRecordFolder);
when(mockedRMNodes.getOrCreatePath(mockedTargetRecordFolder.getId(), null, TYPE_CONTENT)).thenReturn(mockedTargetRecordFolder);
when(mockedNodeService.getType(mockedTargetRecordFolder)).thenReturn(TYPE_RECORD_FOLDER);
when(mockedDictionaryService.isSubClass(TYPE_RECORD_FOLDER, TYPE_RECORD_FOLDER)).thenReturn(true);
@@ -185,7 +188,7 @@ public class RecordsImplUnitTest
/*
* Then the record is moved under the destination folder
*/
verify(mockedNodes).getOrCreatePath(mockedTargetRecordFolder.getId(), null, TYPE_CONTENT);
verify(mockedRMNodes).getOrCreatePath(mockedTargetRecordFolder.getId(), null, TYPE_CONTENT);
verify(mockedFileFolderService).moveFrom(mockedRecord, mockedPrimaryParent, mockedTargetRecordFolder, null);
}
@@ -203,7 +206,7 @@ public class RecordsImplUnitTest
*/
// mock the record to file
NodeRef mockedRecord = AlfMock.generateNodeRef(mockedNodeService);
when(mockedNodes.validateNode(mockedRecord.getId())).thenReturn(mockedRecord);
when(mockedRMNodes.validateNode(mockedRecord.getId())).thenReturn(mockedRecord);
// mock the current primary parent
NodeRef mockedPrimaryParent = AlfMock.generateNodeRef(mockedNodeService);
@@ -220,7 +223,7 @@ public class RecordsImplUnitTest
// mock the target record folder to file the record into
String relativePath = "category/recordFolder";
NodeRef mockedTargetRecordFolder = AlfMock.generateNodeRef(mockedNodeService);
when(mockedNodes.getOrCreatePath(fileplan.getId(), relativePath, TYPE_CONTENT)).thenReturn(mockedTargetRecordFolder);
when(mockedRMNodes.getOrCreatePath(fileplan.getId(), relativePath, TYPE_CONTENT)).thenReturn(mockedTargetRecordFolder);
when(mockedNodeService.getType(mockedTargetRecordFolder)).thenReturn(TYPE_RECORD_FOLDER);
when(mockedDictionaryService.isSubClass(TYPE_RECORD_FOLDER, TYPE_RECORD_FOLDER)).thenReturn(true);
@@ -236,7 +239,7 @@ public class RecordsImplUnitTest
/*
* Then the record is moved under the destination folder relative to the fileplan
*/
verify(mockedNodes).getOrCreatePath(fileplan.getId(), relativePath, TYPE_CONTENT);
verify(mockedRMNodes).getOrCreatePath(fileplan.getId(), relativePath, TYPE_CONTENT);
verify(mockedFileFolderService).moveFrom(mockedRecord, mockedPrimaryParent, mockedTargetRecordFolder, null);
}
@@ -254,7 +257,7 @@ public class RecordsImplUnitTest
*/
// mock the record to file
NodeRef mockedRecord = AlfMock.generateNodeRef(mockedNodeService);
when(mockedNodes.validateNode(mockedRecord.getId())).thenReturn(mockedRecord);
when(mockedRMNodes.validateNode(mockedRecord.getId())).thenReturn(mockedRecord);
// mock the current primary parent
NodeRef mockedPrimaryParent = AlfMock.generateNodeRef(mockedNodeService);
@@ -270,7 +273,7 @@ public class RecordsImplUnitTest
// mock the target record folder to file the record into
String relativePath = "category/recordFolder";
NodeRef mockedTargetRecordFolder = AlfMock.generateNodeRef(mockedNodeService);
when(mockedNodes.getOrCreatePath(mockedTargetCategory.getId(), relativePath, TYPE_CONTENT)).thenReturn(mockedTargetRecordFolder);
when(mockedRMNodes.getOrCreatePath(mockedTargetCategory.getId(), relativePath, TYPE_CONTENT)).thenReturn(mockedTargetRecordFolder);
when(mockedNodeService.getType(mockedTargetRecordFolder)).thenReturn(TYPE_RECORD_FOLDER);
when(mockedDictionaryService.isSubClass(TYPE_RECORD_FOLDER, TYPE_RECORD_FOLDER)).thenReturn(true);
@@ -287,7 +290,7 @@ public class RecordsImplUnitTest
/*
* Then the record is moved under the correct destination folder
*/
verify(mockedNodes).getOrCreatePath(mockedTargetCategory.getId(), relativePath, TYPE_CONTENT);
verify(mockedRMNodes).getOrCreatePath(mockedTargetCategory.getId(), relativePath, TYPE_CONTENT);
verify(mockedFileFolderService).moveFrom(mockedRecord, mockedPrimaryParent, mockedTargetRecordFolder, null);
}
@@ -304,7 +307,7 @@ public class RecordsImplUnitTest
*/
// mock the record to link
NodeRef mockedRecord = AlfMock.generateNodeRef(mockedNodeService);
when(mockedNodes.validateNode(mockedRecord.getId())).thenReturn(mockedRecord);
when(mockedRMNodes.validateNode(mockedRecord.getId())).thenReturn(mockedRecord);
// mock the current primary parent
NodeRef mockedPrimaryParent = AlfMock.generateNodeRef(mockedNodeService);
@@ -316,7 +319,7 @@ public class RecordsImplUnitTest
// mock the target record folder to file the record into
NodeRef mockedTargetRecordFolder = AlfMock.generateNodeRef(mockedNodeService);
when(mockedNodes.getOrCreatePath(mockedTargetRecordFolder.getId(), null, TYPE_CONTENT)).thenReturn(mockedTargetRecordFolder);
when(mockedRMNodes.getOrCreatePath(mockedTargetRecordFolder.getId(), null, TYPE_CONTENT)).thenReturn(mockedTargetRecordFolder);
when(mockedNodeService.getType(mockedTargetRecordFolder)).thenReturn(TYPE_RECORD_FOLDER);
/*
@@ -331,7 +334,7 @@ public class RecordsImplUnitTest
/*
* Then the record is linked to the destination folder
*/
verify(mockedNodes).getOrCreatePath(mockedTargetRecordFolder.getId(), null, TYPE_CONTENT);
verify(mockedRMNodes).getOrCreatePath(mockedTargetRecordFolder.getId(), null, TYPE_CONTENT);
verify(mockedRecordService).link(mockedRecord, mockedTargetRecordFolder);
}
}