diff --git a/remote-api/src/main/java/org/alfresco/rest/api/SizeDetails.java b/remote-api/src/main/java/org/alfresco/rest/api/SizeDetails.java index a6e4c5795b..b749706566 100644 --- a/remote-api/src/main/java/org/alfresco/rest/api/SizeDetails.java +++ b/remote-api/src/main/java/org/alfresco/rest/api/SizeDetails.java @@ -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 { diff --git a/remote-api/src/main/java/org/alfresco/rest/api/impl/SizeDetailsImpl.java b/remote-api/src/main/java/org/alfresco/rest/api/impl/SizeDetailsImpl.java index 3ca47143d6..e057fbac0c 100644 --- a/remote-api/src/main/java/org/alfresco/rest/api/impl/SizeDetailsImpl.java +++ b/remote-api/src/main/java/org/alfresco/rest/api/impl/SizeDetailsImpl.java @@ -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 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(); } } \ No newline at end of file diff --git a/remote-api/src/main/java/org/alfresco/rest/api/nodes/NodeSizeDetailsRelation.java b/remote-api/src/main/java/org/alfresco/rest/api/nodes/NodeSizeDetailsRelation.java index 96153eb33e..c23a9263b9 100644 --- a/remote-api/src/main/java/org/alfresco/rest/api/nodes/NodeSizeDetailsRelation.java +++ b/remote-api/src/main/java/org/alfresco/rest/api/nodes/NodeSizeDetailsRelation.java @@ -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; diff --git a/remote-api/src/test/java/org/alfresco/rest/api/impl/SizeDetailsImplTest.java b/remote-api/src/test/java/org/alfresco/rest/api/impl/SizeDetailsImplTest.java index 8082504dc5..3c9bfa616c 100644 --- a/remote-api/src/test/java/org/alfresco/rest/api/impl/SizeDetailsImplTest.java +++ b/remote-api/src/test/java/org/alfresco/rest/api/impl/SizeDetailsImplTest.java @@ -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 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); diff --git a/remote-api/src/test/java/org/alfresco/rest/api/tests/NodeSizeDetailsTest.java b/remote-api/src/test/java/org/alfresco/rest/api/tests/NodeSizeDetailsTest.java index a576177be7..63fe4077c1 100644 --- a/remote-api/src/test/java/org/alfresco/rest/api/tests/NodeSizeDetailsTest.java +++ b/remote-api/src/test/java/org/alfresco/rest/api/tests/NodeSizeDetailsTest.java @@ -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; diff --git a/repository/src/main/java/org/alfresco/repo/node/sizeDetails/NodeSizeDetailsService.java b/repository/src/main/java/org/alfresco/repo/node/sizedetails/NodeSizeDetailsService.java similarity index 80% rename from repository/src/main/java/org/alfresco/repo/node/sizeDetails/NodeSizeDetailsService.java rename to repository/src/main/java/org/alfresco/repo/node/sizedetails/NodeSizeDetailsService.java index 59b348773d..63212a2029 100644 --- a/repository/src/main/java/org/alfresco/repo/node/sizeDetails/NodeSizeDetailsService.java +++ b/repository/src/main/java/org/alfresco/repo/node/sizedetails/NodeSizeDetailsService.java @@ -23,18 +23,19 @@ * along with Alfresco. If not, see . * #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 getSimpleCache(); + void putSizeDetailsInCache(String id, NodeSizeDetails NodeSizeDetails); + + NodeSizeDetails getSizeDetailsFromCache(String id); + + boolean checkSizeDetailsExist(String id); } diff --git a/repository/src/main/java/org/alfresco/repo/node/sizeDetails/NodeSizeDetailsServiceImpl.java b/repository/src/main/java/org/alfresco/repo/node/sizedetails/NodeSizeDetailsServiceImpl.java similarity index 95% rename from repository/src/main/java/org/alfresco/repo/node/sizeDetails/NodeSizeDetailsServiceImpl.java rename to repository/src/main/java/org/alfresco/repo/node/sizedetails/NodeSizeDetailsServiceImpl.java index e9ccc0b255..fd220dd6b5 100644 --- a/repository/src/main/java/org/alfresco/repo/node/sizeDetails/NodeSizeDetailsServiceImpl.java +++ b/repository/src/main/java/org/alfresco/repo/node/sizedetails/NodeSizeDetailsServiceImpl.java @@ -23,7 +23,7 @@ * along with Alfresco. If not, see . * #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 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 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 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(); } }); diff --git a/repository/src/main/resources/alfresco/node-services-context.xml b/repository/src/main/resources/alfresco/node-services-context.xml index b517f08b25..a39aa5445d 100644 --- a/repository/src/main/resources/alfresco/node-services-context.xml +++ b/repository/src/main/resources/alfresco/node-services-context.xml @@ -344,7 +344,7 @@ - + @@ -360,7 +360,7 @@ - org.alfresco.repo.node.sizeDetails.NodeSizeDetailsService + org.alfresco.repo.node.sizedetails.NodeSizeDetailsService