[feature/MNT-24127-EndpointToCalculateFolderSize] Addressing review comments related to calculate and retrieve folder size details

This commit is contained in:
mohit-singh4
2024-09-20 15:45:14 +05:30
parent 1048c431c0
commit 681b0efbcb
8 changed files with 47 additions and 37 deletions

View File

@@ -25,7 +25,7 @@
*/
package org.alfresco.rest.api;
import org.alfresco.repo.node.sizeDetails.NodeSizeDetailsServiceImpl.NodeSizeDetails;
import org.alfresco.repo.node.sizedetails.NodeSizeDetailsServiceImpl.NodeSizeDetails;
public interface SizeDetails
{

View File

@@ -25,13 +25,10 @@
*/
package org.alfresco.rest.api.impl;
import java.io.Serializable;
import org.alfresco.model.ContentModel;
import org.alfresco.repo.cache.SimpleCache;
import org.alfresco.repo.node.sizeDetails.NodeSizeDetailsService;
import org.alfresco.repo.node.sizeDetails.NodeSizeDetailsServiceImpl.NodeSizeDetails;
import org.alfresco.repo.node.sizeDetails.NodeSizeDetailsServiceImpl.NodeSizeDetails.STATUS;
import org.alfresco.repo.node.sizedetails.NodeSizeDetailsService;
import org.alfresco.repo.node.sizedetails.NodeSizeDetailsServiceImpl.NodeSizeDetails;
import org.alfresco.repo.node.sizedetails.NodeSizeDetailsServiceImpl.NodeSizeDetails.STATUS;
import org.alfresco.rest.api.Nodes;
import org.alfresco.rest.api.SizeDetails;
import org.alfresco.rest.framework.core.exceptions.InvalidNodeTypeException;
@@ -45,7 +42,6 @@ public class SizeDetailsImpl implements SizeDetails, InitializingBean
{
private Nodes nodes;
private NodeRef nodeRef;
private SimpleCache<Serializable, NodeSizeDetails> simpleCache;
private NodeSizeDetailsService nodeSizeDetailsService;
public void setNodes(Nodes nodes)
@@ -67,13 +63,13 @@ public class SizeDetailsImpl implements SizeDetails, InitializingBean
nodeRef = nodes.validateOrLookupNode(nodeId);
validateType(nodeRef);
String actionId;
if (!simpleCache.contains(nodeId))
if (!nodeSizeDetailsService.checkSizeDetailsExist(nodeId))
{
actionId = executeSizeDetails();
}
else
{
NodeSizeDetails nodeSizeDetails = simpleCache.get(nodeId);
NodeSizeDetails nodeSizeDetails = nodeSizeDetailsService.getSizeDetailsFromCache(nodeId);
actionId = nodeSizeDetails.getJobId();
}
return new NodeSizeDetails(null, null, actionId, null);
@@ -88,14 +84,14 @@ public class SizeDetailsImpl implements SizeDetails, InitializingBean
NodeRef nodeRef = nodes.validateOrLookupNode(nodeId);
validateType(nodeRef);
if (!simpleCache.contains(nodeId))
if (!nodeSizeDetailsService.checkSizeDetailsExist(nodeId))
{
NodeSizeDetails nodeSizeDetails = new NodeSizeDetails(nodeId, null, null, STATUS.NOT_INITIATED);
return nodeSizeDetails;
}
else
{
NodeSizeDetails nodeSizeDetails = simpleCache.get(nodeId);
NodeSizeDetails nodeSizeDetails = nodeSizeDetailsService.getSizeDetailsFromCache(nodeId);
String cachedJobId = nodeSizeDetails.getJobId();
if (cachedJobId != null && !jobId.equalsIgnoreCase(cachedJobId))
{
@@ -103,7 +99,7 @@ public class SizeDetailsImpl implements SizeDetails, InitializingBean
}
}
return simpleCache.get(nodeId);
return nodeSizeDetailsService.getSizeDetailsFromCache(nodeId);
}
/**
@@ -114,7 +110,7 @@ public class SizeDetailsImpl implements SizeDetails, InitializingBean
String jobId = GUID.generate();
nodeSizeDetailsService.invokeSizeDetailsExecutor(nodeRef, jobId);
NodeSizeDetails nodeSizeDetails = new NodeSizeDetails(nodeRef.getId(), null, jobId, STATUS.PENDING);
simpleCache.put(nodeRef.getId(), nodeSizeDetails);
nodeSizeDetailsService.putSizeDetailsInCache(nodeRef.getId(), nodeSizeDetails);
return jobId;
}
@@ -131,7 +127,6 @@ public class SizeDetailsImpl implements SizeDetails, InitializingBean
{
ParameterCheck.mandatory("nodes", this.nodes);
ParameterCheck.mandatory("nodeSizeDetailsServiceImpl", this.nodeSizeDetailsService);
this.simpleCache = nodeSizeDetailsService.getSimpleCache();
}
}

View File

@@ -28,7 +28,7 @@ package org.alfresco.rest.api.nodes;
import java.util.List;
import org.alfresco.repo.node.sizeDetails.NodeSizeDetailsServiceImpl.NodeSizeDetails;
import org.alfresco.repo.node.sizedetails.NodeSizeDetailsServiceImpl.NodeSizeDetails;
import org.alfresco.rest.api.SizeDetails;
import org.alfresco.rest.framework.WebApiDescription;
import org.alfresco.rest.framework.WebApiParam;

View File

@@ -35,8 +35,8 @@ import java.util.concurrent.ThreadPoolExecutor;
import org.alfresco.model.ContentModel;
import org.alfresco.repo.cache.SimpleCache;
import org.alfresco.repo.node.sizeDetails.NodeSizeDetailsServiceImpl;
import org.alfresco.repo.node.sizeDetails.NodeSizeDetailsServiceImpl.NodeSizeDetails;
import org.alfresco.repo.node.sizedetails.NodeSizeDetailsServiceImpl;
import org.alfresco.repo.node.sizedetails.NodeSizeDetailsServiceImpl.NodeSizeDetails;
import org.alfresco.rest.api.Nodes;
import org.alfresco.rest.api.model.Node;
import org.alfresco.service.cmr.repository.NodeRef;
@@ -54,6 +54,8 @@ public class SizeDetailsImplTest
private static final QName TYPE_FOLDER = QName.createQName(NAMESPACE, "folder");
private SizeDetailsImpl sizeDetailsImpl;
private Nodes nodes;
private NodeSizeDetailsServiceImpl nodeSizeDetailsServiceImpl;
private NodeSizeDetails nodeSizeDetails;
@Before
public void setUp() throws Exception
@@ -61,19 +63,18 @@ public class SizeDetailsImplTest
sizeDetailsImpl = new SizeDetailsImpl();
nodes = mock(Nodes.class);
SearchService searchService = mock(SearchService.class);
NodeSizeDetailsServiceImpl nodeSizeDetailsServiceImpl = mock(NodeSizeDetailsServiceImpl.class);
nodeSizeDetailsServiceImpl = mock(NodeSizeDetailsServiceImpl.class);
ThreadPoolExecutor threadPoolExecutor = mock(ThreadPoolExecutor.class);
SimpleCache<Serializable, NodeSizeDetails> simpleCache = mock(SimpleCache.class);
nodeSizeDetails = mock(NodeSizeDetails.class);
nodeSizeDetailsServiceImpl.setSearchService(searchService);
nodeSizeDetailsServiceImpl.setDefaultItems(1000);
nodeSizeDetailsServiceImpl.setSimpleCache(simpleCache);
verify(nodeSizeDetailsServiceImpl).setSimpleCache(simpleCache);
nodeSizeDetailsServiceImpl.setThreadPoolExecutor(threadPoolExecutor);
sizeDetailsImpl.setNodes(nodes);
sizeDetailsImpl.setNodeSizeDetailsService(nodeSizeDetailsServiceImpl);
when(nodeSizeDetailsServiceImpl.getSimpleCache()).thenReturn(simpleCache);
sizeDetailsImpl.afterPropertiesSet();
verify(nodeSizeDetailsServiceImpl).setSimpleCache(simpleCache);
}
@Test
@@ -93,6 +94,7 @@ public class SizeDetailsImplTest
when(nodes.validateOrLookupNode(nodeId)).thenReturn(nodeRef);
when(nodes.isSubClass(nodeRef, ContentModel.TYPE_FOLDER, false)).thenReturn(true);
when(nodeSizeDetailsServiceImpl.getSizeDetailsFromCache(nodeId)).thenReturn(nodeSizeDetails);
NodeSizeDetails requestSizeDetails = sizeDetailsImpl.generateNodeSizeDetailsRequest(nodeId);
assertNotNull("After executing POST/size-details, it will provide with 202 status code", requestSizeDetails);

View File

@@ -34,7 +34,7 @@ import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.alfresco.repo.node.sizeDetails.NodeSizeDetailsServiceImpl.NodeSizeDetails;
import org.alfresco.repo.node.sizedetails.NodeSizeDetailsServiceImpl.NodeSizeDetails;
import org.alfresco.rest.api.Nodes;
import org.alfresco.rest.api.model.Site;
import org.alfresco.rest.api.tests.client.HttpResponse;

View File

@@ -23,18 +23,19 @@
* along with Alfresco. If not, see <http://www.gnu.org/licenses/>.
* #L%
*/
package org.alfresco.repo.node.sizeDetails;
package org.alfresco.repo.node.sizedetails;
import java.io.Serializable;
import org.alfresco.repo.cache.SimpleCache;
import org.alfresco.repo.node.sizeDetails.NodeSizeDetailsServiceImpl.NodeSizeDetails;
import org.alfresco.repo.node.sizedetails.NodeSizeDetailsServiceImpl.NodeSizeDetails;
import org.alfresco.service.cmr.repository.NodeRef;
public interface NodeSizeDetailsService
{
void invokeSizeDetailsExecutor(NodeRef nodeRef, String jobId);
SimpleCache<Serializable, NodeSizeDetails> getSimpleCache();
void putSizeDetailsInCache(String id, NodeSizeDetails NodeSizeDetails);
NodeSizeDetails getSizeDetailsFromCache(String id);
boolean checkSizeDetailsExist(String id);
}

View File

@@ -23,7 +23,7 @@
* along with Alfresco. If not, see <http://www.gnu.org/licenses/>.
* #L%
*/
package org.alfresco.repo.node.sizeDetails;
package org.alfresco.repo.node.sizedetails;
import java.io.Serializable;
import java.util.Date;
@@ -32,7 +32,7 @@ import java.util.Objects;
import java.util.concurrent.ThreadPoolExecutor;
import org.alfresco.repo.cache.SimpleCache;
import org.alfresco.repo.node.sizeDetails.NodeSizeDetailsServiceImpl.NodeSizeDetails.STATUS;
import org.alfresco.repo.node.sizedetails.NodeSizeDetailsServiceImpl.NodeSizeDetails.STATUS;
import org.alfresco.repo.security.authentication.AuthenticationUtil;
import org.alfresco.repo.transaction.RetryingTransactionHelper.RetryingTransactionCallback;
import org.alfresco.service.cmr.repository.NodeRef;
@@ -70,9 +70,15 @@ public class NodeSizeDetailsServiceImpl implements NodeSizeDetailsService, Initi
}
@Override
public SimpleCache<Serializable, NodeSizeDetails> getSimpleCache()
public NodeSizeDetails getSizeDetailsFromCache(String id)
{
return simpleCache;
return simpleCache.get(id);
}
@Override
public boolean checkSizeDetailsExist(String id)
{
return simpleCache.contains(id);
}
public void setSimpleCache(SimpleCache<Serializable, NodeSizeDetails> simpleCache)
@@ -109,6 +115,12 @@ public class NodeSizeDetailsServiceImpl implements NodeSizeDetailsService, Initi
}
@Override
public void putSizeDetailsInCache(String id, NodeSizeDetails nodeSizeDetails)
{
simpleCache.put(id, nodeSizeDetails);
}
private void executeSizeCalculation(NodeRef nodeRef, String jobId)
{
RetryingTransactionCallback<NodeSizeDetails> executionCallback = () -> {
@@ -126,7 +138,7 @@ public class NodeSizeDetailsServiceImpl implements NodeSizeDetailsService, Initi
threadPoolExecutor.execute(() -> {
NodeSizeDetails nodeSizeDetails = new NodeSizeDetails(nodeRef.getId(), null, jobId, STATUS.IN_PROGRESS);
simpleCache.put(nodeRef.getId(), nodeSizeDetails);
putSizeDetailsInCache(nodeRef.getId(), nodeSizeDetails);
try
{
@@ -141,7 +153,7 @@ public class NodeSizeDetailsServiceImpl implements NodeSizeDetailsService, Initi
}
finally
{
simpleCache.put(nodeRef.getId(), nodeSizeDetails);
putSizeDetailsInCache(nodeRef.getId(), nodeSizeDetails);
AuthenticationUtil.clearCurrentSecurityContext();
}
});

View File

@@ -344,7 +344,7 @@
</property>
</bean>
<bean id="NodeSizeDetailsServiceImpl" class="org.alfresco.repo.node.sizeDetails.NodeSizeDetailsServiceImpl">
<bean id="NodeSizeDetailsServiceImpl" class="org.alfresco.repo.node.sizedetails.NodeSizeDetailsServiceImpl">
<property name="searchService" ref="SearchService"/>
<property name="simpleCache" ref="folderSizeSharedCache" />
<property name="transactionService" ref="transactionService"/>
@@ -360,7 +360,7 @@
</property>
<property name="proxyInterfaces">
<list>
<value>org.alfresco.repo.node.sizeDetails.NodeSizeDetailsService</value>
<value>org.alfresco.repo.node.sizedetails.NodeSizeDetailsService</value>
</list>
</property>
</bean>