From 25a95383bef35264c0b09ad53214d60a0bc69fbd Mon Sep 17 00:00:00 2001 From: mohit-singh4 Date: Mon, 24 Jun 2024 11:24:10 +0530 Subject: [PATCH] [MNT-24127] Added Endpoint to Calculate Size of the folder with Integration Test Cases [ags][tas] --- .../api/nodes/NodeFolderSizeRelation.java | 19 +++++++++++++++++-- .../rest/api/tests/NodeFolderSizeApiTest.java | 11 +---------- .../executer/NodeSizeActionExecuter.java | 3 ++- .../executer/NodeSizeActionExecuterTest.java | 2 +- 4 files changed, 21 insertions(+), 14 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 2c95fc844a..4af4e946c0 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 @@ -2,7 +2,7 @@ * #%L * Alfresco Remote API * %% - * Copyright (C) 2005 - 2016 Alfresco Software Limited + * Copyright (C) 2005 - 2024 Alfresco Software Limited * %% * This file is part of the Alfresco software. * If the software was purchased under a paid Alfresco license, the terms of @@ -25,7 +25,7 @@ */ package org.alfresco.rest.api.nodes; -import org.alfresco.model.ContentModel; + import org.alfresco.model.FolderSizeModel; import org.alfresco.repo.action.executer.NodeSizeActionExecuter; import org.alfresco.repo.security.permissions.AccessDeniedException; @@ -35,6 +35,8 @@ import org.alfresco.rest.api.model.NodePermissions; import org.alfresco.rest.framework.WebApiDescription; import org.alfresco.rest.framework.WebApiParam; import org.alfresco.rest.framework.WebApiParameters; +import org.alfresco.rest.framework.core.exceptions.EntityNotFoundException; +import org.alfresco.rest.framework.core.exceptions.InvalidNodeTypeException; import org.alfresco.rest.framework.resource.RelationshipResource; import org.alfresco.rest.framework.resource.actions.interfaces.RelationshipResourceAction; import org.alfresco.rest.framework.resource.parameters.Parameters; @@ -74,6 +76,7 @@ public class NodeFolderSizeRelation implements private PermissionService permissionService; private NodeService nodeService; private ActionService actionService; + static final String NOT_A_VALID_NODEID = "Node Id does not refer to a valid type [folder type]"; /** * The logger @@ -127,6 +130,7 @@ public class NodeFolderSizeRelation implements Node nodeInfo = nodes.getNode(nodeId); NodePermissions nodePerms = nodeInfo.getPermissions(); int maxItems = params.getPaging().getMaxItems(); + QName qName = nodeService.getType(nodeRef); if (nodePerms != null) { if (permissionService.hasPermission(nodeRef, PermissionService.READ) == AccessStatus.DENIED) { @@ -134,6 +138,11 @@ public class NodeFolderSizeRelation implements } } + if(!"folder".equals(qName.getLocalName())) + { + throw new InvalidNodeTypeException(NOT_A_VALID_NODEID); + } + try { Action folderSizeAction = actionService.createAction(NodeSizeActionExecuter.NAME); @@ -161,6 +170,12 @@ public class NodeFolderSizeRelation implements NodeRef nodeRef = nodes.validateNode(nodeId); Node nodeInfo = nodes.getNode(nodeId); NodePermissions nodePerms = nodeInfo.getPermissions(); + QName qName = nodeService.getType(nodeRef); + + if(!"folder".equals(qName.getLocalName())) + { + throw new InvalidNodeTypeException(NOT_A_VALID_NODEID); + } if (nodePerms != null) { if (permissionService.hasPermission(nodeRef, PermissionService.READ) == AccessStatus.DENIED) { diff --git a/remote-api/src/test/java/org/alfresco/rest/api/tests/NodeFolderSizeApiTest.java b/remote-api/src/test/java/org/alfresco/rest/api/tests/NodeFolderSizeApiTest.java index df89492aec..3d435755a7 100644 --- a/remote-api/src/test/java/org/alfresco/rest/api/tests/NodeFolderSizeApiTest.java +++ b/remote-api/src/test/java/org/alfresco/rest/api/tests/NodeFolderSizeApiTest.java @@ -2,7 +2,7 @@ * #%L * Alfresco Remote API * %% - * Copyright (C) 2005 - 2020 Alfresco Software Limited + * Copyright (C) 2005 - 2024 Alfresco Software Limited * %% * This file is part of the Alfresco software. * If the software was purchased under a paid Alfresco license, the terms of @@ -30,15 +30,8 @@ import org.alfresco.rest.api.model.NodeTarget; import org.alfresco.rest.api.model.Site; import org.alfresco.rest.api.tests.client.HttpResponse; import org.alfresco.rest.api.tests.util.RestApiUtil; -import org.alfresco.service.cmr.action.ActionService; -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.cmr.rule.RuleService; -import org.alfresco.service.cmr.security.AuthorityService; import org.alfresco.service.cmr.security.PermissionService; import org.alfresco.service.cmr.site.SiteVisibility; -import org.alfresco.service.namespace.NamespaceService; import org.junit.After; import org.junit.Before; import org.junit.Test; @@ -136,8 +129,6 @@ public class NodeFolderSizeApiTest extends AbstractBaseApiTest{ String siteTitle = "RandomSite" + System.currentTimeMillis(); userOneN1Site = createSite("RN"+RUNID, siteTitle, siteTitle, SiteVisibility.PRIVATE, 201); - String rootNodeId = getRootNodeId(); - String my2NodeId = getMyNodeId(); // Create a folder within the site document's library. String folderName = "folder" + System.currentTimeMillis(); diff --git a/repository/src/main/java/org/alfresco/repo/action/executer/NodeSizeActionExecuter.java b/repository/src/main/java/org/alfresco/repo/action/executer/NodeSizeActionExecuter.java index 45ea4029cb..ddad27704e 100644 --- a/repository/src/main/java/org/alfresco/repo/action/executer/NodeSizeActionExecuter.java +++ b/repository/src/main/java/org/alfresco/repo/action/executer/NodeSizeActionExecuter.java @@ -2,7 +2,7 @@ * #%L * Alfresco Repository * %% - * Copyright (C) 2005 - 2016 Alfresco Software Limited + * Copyright (C) 2005 - 2024 Alfresco Software Limited * %% * This file is part of the Alfresco software. * If the software was purchased under a paid Alfresco license, the terms of @@ -149,6 +149,7 @@ public class NodeSizeActionExecuter extends ActionExecuterAbstractBase response.put("id", nodeRef.getId()); response.put("size", totalSize); response.put("calculatedAtTime", formattedTimestamp); + response.put("numberOfFiles", results!=null?results.getNodeRefs().size():0); nodeService.setProperty(nodeRef, FolderSizeModel.PROP_OUTPUT, (Serializable) response); nodeService.setProperty(nodeRef, FolderSizeModel.PROP_STATUS,"COMPLETED"); } 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 daeacb6e28..4b8f97f911 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 @@ -2,7 +2,7 @@ * #%L * Alfresco Repository * %% - * Copyright (C) 2005 - 2016 Alfresco Software Limited + * Copyright (C) 2005 - 2024 Alfresco Software Limited * %% * This file is part of the Alfresco software. * If the software was purchased under a paid Alfresco license, the terms of