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 IS_LINKED_TO = "isLinkedTo";
|
||||||
protected static final String RULE_IDS = "ruleIds";
|
protected static final String RULE_IDS = "ruleIds";
|
||||||
private static final int MAX_INHERITED_BY_SIZE = 100;
|
private static final int MAX_INHERITED_BY_SIZE = 100;
|
||||||
|
private static final int MAX_LINKED_TO_BY_SIZE = 100;
|
||||||
private NodeService nodeService;
|
private NodeService nodeService;
|
||||||
private RuleService ruleService;
|
private RuleService ruleService;
|
||||||
private RestRuleModelMapper restRuleModelMapper;
|
private RestRuleModelMapper restRuleModelMapper;
|
||||||
@@ -123,7 +124,7 @@ public class RuleSetLoader
|
|||||||
|
|
||||||
private List<NodeRef> loadLinkedToBy(NodeRef ruleSetNodeRef)
|
private List<NodeRef> loadLinkedToBy(NodeRef ruleSetNodeRef)
|
||||||
{
|
{
|
||||||
return ruleService.getFoldersLinkingToRuleSet(ruleSetNodeRef);
|
return ruleService.getFoldersLinkingToRuleSet(ruleSetNodeRef, MAX_LINKED_TO_BY_SIZE);
|
||||||
}
|
}
|
||||||
|
|
||||||
private boolean loadIsInherited(NodeRef ruleSetNodeRef)
|
private boolean loadIsInherited(NodeRef ruleSetNodeRef)
|
||||||
|
@@ -692,11 +692,12 @@ public class RuleServiceImpl
|
|||||||
/** {@inheritDoc} */
|
/** {@inheritDoc} */
|
||||||
@Override
|
@Override
|
||||||
@Experimental
|
@Experimental
|
||||||
public List<NodeRef> getFoldersLinkingToRuleSet(NodeRef ruleSet)
|
public List<NodeRef> getFoldersLinkingToRuleSet(NodeRef ruleSet, int maxFoldersToReturn)
|
||||||
{
|
{
|
||||||
NodeRef parentRef = nodeService.getPrimaryParent(ruleSet).getParentRef();
|
NodeRef parentRef = nodeService.getPrimaryParent(ruleSet).getParentRef();
|
||||||
return nodeService.getParentAssocs(ruleSet)
|
return nodeService.getParentAssocs(ruleSet)
|
||||||
.stream()
|
.stream()
|
||||||
|
.limit(maxFoldersToReturn)
|
||||||
.map(ChildAssociationRef::getParentRef)
|
.map(ChildAssociationRef::getParentRef)
|
||||||
.filter(folder -> !folder.equals(parentRef))
|
.filter(folder -> !folder.equals(parentRef))
|
||||||
.filter(folder -> permissionService.hasReadPermission(folder) == ALLOWED)
|
.filter(folder -> permissionService.hasReadPermission(folder) == ALLOWED)
|
||||||
|
@@ -243,11 +243,12 @@ public interface RuleService
|
|||||||
* Get a list of folders linking to the specified rule set.
|
* Get a list of folders linking to the specified rule set.
|
||||||
*
|
*
|
||||||
* @param ruleSet The rule set node.
|
* @param ruleSet The rule set node.
|
||||||
|
* @param maxFoldersToReturn A limit on the number of folders to return.
|
||||||
* @return The list linking folders.
|
* @return The list linking folders.
|
||||||
*/
|
*/
|
||||||
@Auditable (parameters = { "ruleSet" })
|
@Auditable (parameters = { "ruleSet" })
|
||||||
@Experimental
|
@Experimental
|
||||||
List<NodeRef> getFoldersLinkingToRuleSet(NodeRef ruleSet);
|
List<NodeRef> getFoldersLinkingToRuleSet(NodeRef ruleSet, int maxFoldersToReturn);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the rule given its node reference
|
* Get the rule given its node reference
|
||||||
|
@@ -730,7 +730,7 @@ public class RuleServiceImplUnitTest
|
|||||||
given(linkingAssocMock.getParentRef()).willReturn(linkingFolder);
|
given(linkingAssocMock.getParentRef()).willReturn(linkingFolder);
|
||||||
given(nodeService.getParentAssocs(ruleSetNode)).willReturn(List.of(owningAssocMock, linkingAssocMock));
|
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);
|
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.
|
// The currect user does not have permission to view the folder.
|
||||||
given(permissionService.hasReadPermission(linkingFolder)).willReturn(DENIED);
|
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);
|
assertEquals("Unexpected list of linking folders.", emptyList(), linkingFolders);
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user