mirror of
https://github.com/Alfresco/alfresco-community-repo.git
synced 2025-07-24 17:32:48 +00:00
ACS-3605 Add limit to maximum size of optional linkedToBy field.
This commit is contained in:
@@ -54,6 +54,7 @@ public class RuleSetLoader
|
||||
protected static final String IS_LINKED_TO = "isLinkedTo";
|
||||
protected static final String RULE_IDS = "ruleIds";
|
||||
private static final int MAX_INHERITED_BY_SIZE = 100;
|
||||
private static final int MAX_LINKED_TO_BY_SIZE = 100;
|
||||
private NodeService nodeService;
|
||||
private RuleService ruleService;
|
||||
private RestRuleModelMapper restRuleModelMapper;
|
||||
@@ -123,7 +124,7 @@ public class RuleSetLoader
|
||||
|
||||
private List<NodeRef> loadLinkedToBy(NodeRef ruleSetNodeRef)
|
||||
{
|
||||
return ruleService.getFoldersLinkingToRuleSet(ruleSetNodeRef);
|
||||
return ruleService.getFoldersLinkingToRuleSet(ruleSetNodeRef, MAX_LINKED_TO_BY_SIZE);
|
||||
}
|
||||
|
||||
private boolean loadIsInherited(NodeRef ruleSetNodeRef)
|
||||
|
@@ -692,11 +692,12 @@ public class RuleServiceImpl
|
||||
/** {@inheritDoc} */
|
||||
@Override
|
||||
@Experimental
|
||||
public List<NodeRef> getFoldersLinkingToRuleSet(NodeRef ruleSet)
|
||||
public List<NodeRef> getFoldersLinkingToRuleSet(NodeRef ruleSet, int maxFoldersToReturn)
|
||||
{
|
||||
NodeRef parentRef = nodeService.getPrimaryParent(ruleSet).getParentRef();
|
||||
return nodeService.getParentAssocs(ruleSet)
|
||||
.stream()
|
||||
.limit(maxFoldersToReturn)
|
||||
.map(ChildAssociationRef::getParentRef)
|
||||
.filter(folder -> !folder.equals(parentRef))
|
||||
.filter(folder -> permissionService.hasReadPermission(folder) == ALLOWED)
|
||||
|
@@ -243,11 +243,12 @@ public interface RuleService
|
||||
* Get a list of folders linking to the specified rule set.
|
||||
*
|
||||
* @param ruleSet The rule set node.
|
||||
* @param maxFoldersToReturn A limit on the number of folders to return.
|
||||
* @return The list linking folders.
|
||||
*/
|
||||
@Auditable (parameters = { "ruleSet" })
|
||||
@Experimental
|
||||
List<NodeRef> getFoldersLinkingToRuleSet(NodeRef ruleSet);
|
||||
List<NodeRef> getFoldersLinkingToRuleSet(NodeRef ruleSet, int maxFoldersToReturn);
|
||||
|
||||
/**
|
||||
* Get the rule given its node reference
|
||||
|
@@ -730,7 +730,7 @@ public class RuleServiceImplUnitTest
|
||||
given(linkingAssocMock.getParentRef()).willReturn(linkingFolder);
|
||||
given(nodeService.getParentAssocs(ruleSetNode)).willReturn(List.of(owningAssocMock, linkingAssocMock));
|
||||
|
||||
List<NodeRef> linkingFolders = ruleService.getFoldersLinkingToRuleSet(ruleSetNode);
|
||||
List<NodeRef> linkingFolders = ruleService.getFoldersLinkingToRuleSet(ruleSetNode, 100);
|
||||
|
||||
assertEquals("Unexpected list of linking folders.", List.of(linkingFolder), linkingFolders);
|
||||
}
|
||||
@@ -752,7 +752,7 @@ public class RuleServiceImplUnitTest
|
||||
// The currect user does not have permission to view the folder.
|
||||
given(permissionService.hasReadPermission(linkingFolder)).willReturn(DENIED);
|
||||
|
||||
List<NodeRef> linkingFolders = ruleService.getFoldersLinkingToRuleSet(ruleSetNode);
|
||||
List<NodeRef> linkingFolders = ruleService.getFoldersLinkingToRuleSet(ruleSetNode, 100);
|
||||
|
||||
assertEquals("Unexpected list of linking folders.", emptyList(), linkingFolders);
|
||||
}
|
||||
|
Reference in New Issue
Block a user