From 0836e9682b15422c2a5ae034da7d8a1de7ce4675 Mon Sep 17 00:00:00 2001 From: Silviu Dinuta Date: Tue, 8 Nov 2016 18:38:35 +0200 Subject: [PATCH] RM-4326: allow creation in transfer only from TransferServiceImpl --- .../rm-model-context.xml | 2 + .../rm-service-context.xml | 5 ++- .../transfer/TransferServiceImpl.java | 24 ++++++++-- .../rm/rest/api/impl/RMNodesImpl.java | 6 +-- .../rm/rest/api/impl/RMNodesImplUnitTest.java | 16 ------- ...planComponentChildrenRelationUnitTest.java | 44 ------------------- 6 files changed, 26 insertions(+), 71 deletions(-) diff --git a/rm-community/rm-community-repo/config/alfresco/module/org_alfresco_module_rm/rm-model-context.xml b/rm-community/rm-community-repo/config/alfresco/module/org_alfresco_module_rm/rm-model-context.xml index 16dd447fe6..fe6cedfd6d 100644 --- a/rm-community/rm-community-repo/config/alfresco/module/org_alfresco_module_rm/rm-model-context.xml +++ b/rm-community/rm-community-repo/config/alfresco/module/org_alfresco_module_rm/rm-model-context.xml @@ -84,6 +84,8 @@ + + diff --git a/rm-community/rm-community-repo/config/alfresco/module/org_alfresco_module_rm/rm-service-context.xml b/rm-community/rm-community-repo/config/alfresco/module/org_alfresco_module_rm/rm-service-context.xml index e875aba1e5..ca3985d07f 100644 --- a/rm-community/rm-community-repo/config/alfresco/module/org_alfresco_module_rm/rm-service-context.xml +++ b/rm-community/rm-community-repo/config/alfresco/module/org_alfresco_module_rm/rm-service-context.xml @@ -162,6 +162,7 @@ + @@ -1061,8 +1062,8 @@ - - + + diff --git a/rm-community/rm-community-repo/source/java/org/alfresco/module/org_alfresco_module_rm/transfer/TransferServiceImpl.java b/rm-community/rm-community-repo/source/java/org/alfresco/module/org_alfresco_module_rm/transfer/TransferServiceImpl.java index 89b1227eef..be3775462f 100644 --- a/rm-community/rm-community-repo/source/java/org/alfresco/module/org_alfresco_module_rm/transfer/TransferServiceImpl.java +++ b/rm-community/rm-community-repo/source/java/org/alfresco/module/org_alfresco_module_rm/transfer/TransferServiceImpl.java @@ -42,6 +42,7 @@ import org.alfresco.module.org_alfresco_module_rm.fileplan.FilePlanService; import org.alfresco.module.org_alfresco_module_rm.freeze.FreezeService; import org.alfresco.module.org_alfresco_module_rm.model.RecordsManagementModel; import org.alfresco.module.org_alfresco_module_rm.model.rma.type.TransferContainerType; +import org.alfresco.module.org_alfresco_module_rm.model.rma.type.TransferType; import org.alfresco.module.org_alfresco_module_rm.record.RecordService; import org.alfresco.module.org_alfresco_module_rm.recordfolder.RecordFolderService; import org.alfresco.module.org_alfresco_module_rm.util.ServiceBaseImpl; @@ -90,6 +91,8 @@ public class TransferServiceImpl extends ServiceBaseImpl protected TransferContainerType transferContainerType; + protected TransferType transferType; + /** * @param filePlanService file plan service */ @@ -135,6 +138,11 @@ public class TransferServiceImpl extends ServiceBaseImpl this.transferContainerType = transferContainerType; } + public void setTransferType(TransferType transferType) + { + this.transferType = transferType; + } + /** * @see org.alfresco.module.org_alfresco_module_rm.transfer.TransferService#transfer(NodeRef, boolean) */ @@ -205,10 +213,18 @@ public class TransferServiceImpl extends ServiceBaseImpl } // Link the record to the trasnfer object - nodeService.addChild(transferNodeRef, - nodeRef, - ASSOC_TRANSFERRED, - ASSOC_TRANSFERRED); + transferType.disable(); + try + { + nodeService.addChild(transferNodeRef, + nodeRef, + ASSOC_TRANSFERRED, + ASSOC_TRANSFERRED); + } + finally + { + transferType.enable(); + } // Set PDF indicator flag setPDFIndicationFlag(transferNodeRef, nodeRef); diff --git a/rm-community/rm-community-repo/source/java/org/alfresco/rm/rest/api/impl/RMNodesImpl.java b/rm-community/rm-community-repo/source/java/org/alfresco/rm/rest/api/impl/RMNodesImpl.java index 94effa0345..198c75afab 100644 --- a/rm-community/rm-community-repo/source/java/org/alfresco/rm/rest/api/impl/RMNodesImpl.java +++ b/rm-community/rm-community-repo/source/java/org/alfresco/rm/rest/api/impl/RMNodesImpl.java @@ -409,11 +409,7 @@ public class RMNodesImpl extends NodesImpl implements RMNodes NodeRef parentNodeRef = validateOrLookupNode(nodeId, null); QName parentNodeRefType = nodeService.getType(parentNodeRef); - if(RecordsManagementModel.TYPE_TRANSFER.equals(parentNodeRefType)) - { - throw new PermissionDeniedException("POST request not allowed in Transfer Folder."); - } - else if(RecordsManagementModel.TYPE_HOLD.equals(parentNodeRefType)) + if(RecordsManagementModel.TYPE_HOLD.equals(parentNodeRefType)) { throw new PermissionDeniedException("POST request not allowed in Hold Folder."); } diff --git a/rm-community/rm-community-repo/unit-test/java/org/alfresco/rm/rest/api/impl/RMNodesImplUnitTest.java b/rm-community/rm-community-repo/unit-test/java/org/alfresco/rm/rest/api/impl/RMNodesImplUnitTest.java index 47042d1d5f..21c0ab62f5 100644 --- a/rm-community/rm-community-repo/unit-test/java/org/alfresco/rm/rest/api/impl/RMNodesImplUnitTest.java +++ b/rm-community/rm-community-repo/unit-test/java/org/alfresco/rm/rest/api/impl/RMNodesImplUnitTest.java @@ -755,22 +755,6 @@ public class RMNodesImplUnitTest extends BaseUnitTest rmNodesImpl.checkPostPermission(parentNodeRef.getId()); } - @Test - public void testCheckPostPermissionForTransferFolder() throws Exception - { - NodeRef parentNodeRef = AlfMock.generateNodeRef(mockedNodeService); - when(mockedNodeService.getType(parentNodeRef)).thenReturn(RecordsManagementModel.TYPE_TRANSFER); - try - { - rmNodesImpl.checkPostPermission(parentNodeRef.getId()); - fail("Expected ecxeption as post should not be permitted on the Transfer Folder"); - } - catch(PermissionDeniedException ex) - { - assertEquals("POST request not allowed in Transfer Folder.", ex.getMsgId()); - } - } - @Test public void testCheckPostPermissionForHoldFolder() throws Exception { diff --git a/rm-community/rm-community-repo/unit-test/java/org/alfresco/rm/rest/api/nodes/FileplanComponentChildrenRelationUnitTest.java b/rm-community/rm-community-repo/unit-test/java/org/alfresco/rm/rest/api/nodes/FileplanComponentChildrenRelationUnitTest.java index a5bca8b366..df7e599d01 100644 --- a/rm-community/rm-community-repo/unit-test/java/org/alfresco/rm/rest/api/nodes/FileplanComponentChildrenRelationUnitTest.java +++ b/rm-community/rm-community-repo/unit-test/java/org/alfresco/rm/rest/api/nodes/FileplanComponentChildrenRelationUnitTest.java @@ -145,29 +145,6 @@ public class FileplanComponentChildrenRelationUnitTest extends BaseUnitTest verify(mockedRMNodes, never()).createNode(parentNodeRef.getId(), nodeInfos.get(0), mockedParameters); } - @Test - public void testCreateOnTransferFolder() throws Exception - { - Parameters mockedParameters = mock(Parameters.class); - NodeRef parentNodeRef = AlfMock.generateNodeRef(mockedNodeService); - - List nodeInfos = new ArrayList(); - Node mokedNodeInfo = mock(Node.class); - nodeInfos.add(mokedNodeInfo); - - Mockito.doThrow(new PermissionDeniedException("POST request not allowed in Transfer Folder.")).when(mockedRMNodes).checkPostPermission(parentNodeRef.getId()); - try - { - filePlanComponentChildrenRelation.create(parentNodeRef.getId(), nodeInfos, mockedParameters); - fail("Expected ecxeption as POST request is not allowed in Transfer Folder."); - } - catch(PermissionDeniedException ex) - { - assertEquals("POST request not allowed in Transfer Folder.", ex.getMsgId()); - } - verify(mockedRMNodes, never()).createNode(parentNodeRef.getId(), nodeInfos.get(0), mockedParameters); - } - @Test public void testUpload() throws Exception { @@ -220,25 +197,4 @@ public class FileplanComponentChildrenRelationUnitTest extends BaseUnitTest } verify(mockedRMNodes, never()).upload(parentNodeRef.getId(), mockedFormData, mockedParameters); } - - @Test - public void testUploadOnTransferFolder() throws Exception - { - Parameters mockedParameters = mock(Parameters.class); - NodeRef parentNodeRef = AlfMock.generateNodeRef(mockedNodeService); - FormData mockedFormData = mock(FormData.class); - WithResponse mockedWithResponse = mock(WithResponse.class); - - Mockito.doThrow(new PermissionDeniedException("POST request not allowed in Transfer Folder.")).when(mockedRMNodes).checkPostPermission(parentNodeRef.getId()); - try - { - filePlanComponentChildrenRelation.create(parentNodeRef.getId(), mockedFormData, mockedParameters, mockedWithResponse); - fail("Expected ecxeption as POST request is not allowed in Transfer Folder."); - } - catch(PermissionDeniedException ex) - { - assertEquals("POST request not allowed in Transfer Folder.", ex.getMsgId()); - } - verify(mockedRMNodes, never()).upload(parentNodeRef.getId(), mockedFormData, mockedParameters); - } }