From a26ac1f778cb0e636512dca7aafda2c5d73e0a06 Mon Sep 17 00:00:00 2001 From: Krystian Dabrowski <98942253+krdabrowski@users.noreply.github.com> Date: Tue, 21 Mar 2023 15:37:19 +0100 Subject: [PATCH] ACS-4857: Lookup for root tag in DB and NOT using search engine (#1810) * ACS-4857: Lookup for root tag in DB and NOT using search engine Also: - removing commons-collections exclusion within test scope due to: "Caused by: java.lang.ClassNotFoundException: org.apache.commons.collections.CollectionUtils" --- amps/share-services/pom.xml | 6 ---- .../impl/AbstractCategoryServiceImpl.java | 36 ++++++++----------- 2 files changed, 14 insertions(+), 28 deletions(-) diff --git a/amps/share-services/pom.xml b/amps/share-services/pom.xml index 09ba47d7f9..d23fd0db2e 100644 --- a/amps/share-services/pom.xml +++ b/amps/share-services/pom.xml @@ -121,12 +121,6 @@ ${dependency.webscripts.version} tests test - - - commons-collections - commons-collections - - org.springframework diff --git a/repository/src/main/java/org/alfresco/repo/search/impl/AbstractCategoryServiceImpl.java b/repository/src/main/java/org/alfresco/repo/search/impl/AbstractCategoryServiceImpl.java index 02887ff6aa..760bbd2bb8 100644 --- a/repository/src/main/java/org/alfresco/repo/search/impl/AbstractCategoryServiceImpl.java +++ b/repository/src/main/java/org/alfresco/repo/search/impl/AbstractCategoryServiceImpl.java @@ -353,28 +353,15 @@ public abstract class AbstractCategoryServiceImpl implements CategoryService return assocs; } - protected Set getClassificationNodes(StoreRef storeRef, QName qname) + protected Set getClassificationNodes(StoreRef storeRef, QName aspectQName) { - ResultSet resultSet = null; try { - resultSet = indexerAndSearcher.getSearcher(storeRef, false).query(storeRef, "lucene", - "PATH:\"/" + getPrefix(qname.getNamespaceURI()) + ISO9075.encode(qname.getLocalName()) + "\"", null); - - Set nodeRefs = new HashSet(resultSet.length()); - for (ResultSetRow row : resultSet) - { - nodeRefs.add(row.getNodeRef()); - } - - return nodeRefs; + return getRootCategoryNodeRef(storeRef, aspectQName).stream().collect(Collectors.toSet()); } - finally + catch (CategoryServiceException ignore) { - if (resultSet != null) - { - resultSet.close(); - } + return Collections.emptySet(); } } @@ -630,19 +617,24 @@ public abstract class AbstractCategoryServiceImpl implements CategoryService @Override @Experimental public Optional getRootCategoryNodeRef(final StoreRef storeRef) + { + return getRootCategoryNodeRef(storeRef, ContentModel.ASPECT_GEN_CLASSIFIABLE); + } + + private Optional getRootCategoryNodeRef(final StoreRef storeRef, final QName childNodeType) { final NodeRef rootNode = nodeService.getRootNode(storeRef); final ChildAssociationRef categoryRoot = nodeService.getChildAssocs(rootNode, Set.of(ContentModel.TYPE_CATEGORYROOT)).stream() - .findFirst() - .orElseThrow(() -> new CategoryServiceException(NODE_WITH_CATEGORY_ROOT_TYPE_NOT_FOUND)); + .findFirst() + .orElseThrow(() -> new CategoryServiceException(NODE_WITH_CATEGORY_ROOT_TYPE_NOT_FOUND)); final List categoryRootAssocs = nodeService.getChildAssocs(categoryRoot.getChildRef()); if (CollectionUtils.isEmpty(categoryRootAssocs)) { throw new CategoryServiceException(CATEGORY_ROOT_NODE_NOT_FOUND); } return categoryRootAssocs.stream() - .filter(ca -> ca.getQName().equals(ContentModel.ASPECT_GEN_CLASSIFIABLE)) - .map(ChildAssociationRef::getChildRef) - .findFirst(); + .filter(ca -> ca.getQName().equals(childNodeType)) + .map(ChildAssociationRef::getChildRef) + .findFirst(); } }