From 9d9d5ee599e68849d414eaf37f81fa0205bb4cd6 Mon Sep 17 00:00:00 2001 From: mohit-singh4 Date: Wed, 26 Jun 2024 23:24:25 +0530 Subject: [PATCH] [MNT-24127] Added Endpoint to Calculate Size of the folder with Integration Test Cases [ags][tas] --- .../api/nodes/NodeFolderSizeRelation.java | 69 ++++++++++--------- .../executer/NodeSizeActionExecuterTest.java | 7 +- 2 files changed, 41 insertions(+), 35 deletions(-) diff --git a/remote-api/src/main/java/org/alfresco/rest/api/nodes/NodeFolderSizeRelation.java b/remote-api/src/main/java/org/alfresco/rest/api/nodes/NodeFolderSizeRelation.java index dac3abe0fd..9889dbd2df 100644 --- a/remote-api/src/main/java/org/alfresco/rest/api/nodes/NodeFolderSizeRelation.java +++ b/remote-api/src/main/java/org/alfresco/rest/api/nodes/NodeFolderSizeRelation.java @@ -130,19 +130,14 @@ public class NodeFolderSizeRelation implements RelationshipResourceAction.Calcul { NodeRef nodeRef = nodes.validateNode(nodeId); Map resetFolderOutput = new HashMap<>(); - resetFolderOutput.put("status","IN-PROGRESS"); - nodeService.setProperty(nodeRef, FolderSizeModel.PROP_OUTPUT, (Serializable) resetFolderOutput); - nodeService.setProperty(nodeRef, FolderSizeModel.PROP_ERROR,null); - Node nodeInfo = nodes.getNode(nodeId); - NodePermissions nodePerms = nodeInfo.getPermissions(); int maxItems = params.getPaging().getMaxItems(); QName qName = nodeService.getType(nodeRef); Map result = new HashMap<>(); + resetFolderOutput.put("status","IN-PROGRESS"); + nodeService.setProperty(nodeRef, FolderSizeModel.PROP_OUTPUT, (Serializable) resetFolderOutput); + nodeService.setProperty(nodeRef, FolderSizeModel.PROP_ERROR,null); - if (nodePerms != null && permissionService.hasPermission(nodeRef, PermissionService.READ) == AccessStatus.DENIED) - { - throw new AccessDeniedException("permissions.err_access_denied"); - } + validatePermissions(nodeRef, nodeId); if(!"folder".equals(qName.getLocalName())) { @@ -174,33 +169,13 @@ public class NodeFolderSizeRelation implements RelationshipResourceAction.Calcul public Map readById(String nodeId, String id, Parameters parameters) { NodeRef nodeRef = nodes.validateNode(nodeId); - Node nodeInfo = nodes.getNode(nodeId); - NodePermissions nodePerms = nodeInfo.getPermissions(); + validatePermissions(nodeRef, nodeId); + validateNodeType(nodeRef); - // Validate permissions. - if (nodePerms != null && permissionService.hasPermission(nodeRef, PermissionService.READ) == AccessStatus.DENIED) - { - throw new AccessDeniedException("permissions.err_access_denied"); - } - - // Check node type. - QName qName = nodeService.getType(nodeRef); - if (!"folder".equals(qName.getLocalName())) - { - throw new InvalidNodeTypeException(NOT_A_VALID_NODEID); - } - - // Check for specific properties - Map properties = nodeService.getProperties(nodeRef); - if (properties.containsKey(FolderSizeModel.PROP_ERROR) && properties.get(FolderSizeModel.PROP_ERROR) != null) - { - throw new InvalidNodeTypeException(String.valueOf(properties.get(FolderSizeModel.PROP_ERROR))); - } - - // Process properties and return result. try { LOG.info("Retrieving OUTPUT from ActionExecutor in NodeFolderSizeRelation:readById"); + Map properties = nodeService.getProperties(nodeRef); Map result = new HashMap<>(); if (properties == null || !properties.containsKey(FolderSizeModel.PROP_OUTPUT)) @@ -231,4 +206,34 @@ public class NodeFolderSizeRelation implements RelationshipResourceAction.Calcul } } + private void validatePermissions(NodeRef nodeRef, String nodeId) + { + Node nodeInfo = nodes.getNode(nodeId); + NodePermissions nodePerms = nodeInfo.getPermissions(); + + // Validate permissions. + if (nodePerms != null && permissionService.hasPermission(nodeRef, PermissionService.READ) == AccessStatus.DENIED) + { + throw new AccessDeniedException("permissions.err_access_denied"); + } + } + + private void validateNodeType(NodeRef nodeRef) + { + // Check node type. + QName qName = nodeService.getType(nodeRef); + + if (!"folder".equals(qName.getLocalName())) + { + throw new InvalidNodeTypeException(NOT_A_VALID_NODEID); + } + + // Check for specific properties + Map properties = nodeService.getProperties(nodeRef); + if (properties.containsKey(FolderSizeModel.PROP_ERROR) && properties.get(FolderSizeModel.PROP_ERROR) != null) + { + throw new InvalidNodeTypeException(String.valueOf(properties.get(FolderSizeModel.PROP_ERROR))); + } + } + } \ No newline at end of file diff --git a/repository/src/test/java/org/alfresco/repo/action/executer/NodeSizeActionExecuterTest.java b/repository/src/test/java/org/alfresco/repo/action/executer/NodeSizeActionExecuterTest.java index 0ca562efd2..9048e3a861 100644 --- a/repository/src/test/java/org/alfresco/repo/action/executer/NodeSizeActionExecuterTest.java +++ b/repository/src/test/java/org/alfresco/repo/action/executer/NodeSizeActionExecuterTest.java @@ -25,6 +25,8 @@ */ package org.alfresco.repo.action.executer; +import java.util.Map; + import org.alfresco.model.ContentModel; import org.alfresco.model.FolderSizeModel; import org.alfresco.repo.action.ActionImpl; @@ -98,12 +100,11 @@ public class NodeSizeActionExecuterTest extends BaseSpringTest @Test public void testExecution() { - assertEquals(1,1); int maxItems = 100; ActionImpl action = new ActionImpl(null, ID, NodeSizeActionExecuter.NAME, null); action.setParameterValue(NodeSizeActionExecuter.PAGE_SIZE, maxItems); this.executer.executeImpl(action, this.nodeRef); - String compareString = this.nodeService.getProperty(this.nodeRef, FolderSizeModel.PROP_STATUS).toString(); - assertTrue(compareString != null); + Map mapResult = (Map)this.nodeService.getProperty(this.nodeRef, FolderSizeModel.PROP_OUTPUT); + assertTrue(mapResult != null); } }