RM-4326: allow creation in transfer only from TransferServiceImpl

This commit is contained in:
Silviu Dinuta
2016-11-08 18:38:35 +02:00
parent 517e3286b2
commit 0836e9682b
6 changed files with 26 additions and 71 deletions

View File

@@ -84,6 +84,8 @@
<bean id="rma.transferContainer" class="org.alfresco.module.org_alfresco_module_rm.model.rma.type.TransferContainerType" parent="rm.baseBehaviour">
</bean>
<bean id="rma.transfer" class="org.alfresco.module.org_alfresco_module_rm.model.rma.type.TransferType" parent="rm.baseBehaviour" />
<bean id="rma.unfiledRecordsContainer" class="org.alfresco.module.org_alfresco_module_rm.model.rma.type.UnfiledRecordContainerType" parent="rm.baseBehaviour">
</bean>

View File

@@ -162,6 +162,7 @@
<property name="nodeService" ref="nodeService"/>
<property name="freezeService" ref="FreezeService"/>
<property name="transferContainerType" ref="rma.transferContainer"/>
<property name="transferType" ref="rma.transfer"/>
</bean>
<bean id="RmTransferService" class="org.springframework.aop.framework.ProxyFactoryBean">

View File

@@ -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
transferType.disable();
try
{
nodeService.addChild(transferNodeRef,
nodeRef,
ASSOC_TRANSFERRED,
ASSOC_TRANSFERRED);
}
finally
{
transferType.enable();
}
// Set PDF indicator flag
setPDFIndicationFlag(transferNodeRef, nodeRef);

View File

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

View File

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

View File

@@ -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<Node> nodeInfos = new ArrayList<Node>();
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);
}
}