ACE-5453: 500 error: GET /nodes/{nodeId}/ratings?skipCount=XXX

- implemented fix and added new unit test 

git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/BRANCHES/DEV/5.2.N/root@131385 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
Iuliana Danea
2016-10-13 06:52:01 +00:00
parent 0c51b17e0f
commit 82f2708aa7
2 changed files with 29 additions and 6 deletions

View File

@@ -107,15 +107,17 @@ public class NodeRatingsImpl implements NodeRatings
Iterator<String> it = schemes.iterator();
int skipCount = paging.getSkipCount();
int maxItems = paging.getMaxItems();
int maxItems = paging.getMaxItems();
int totalSize = schemes.size();
int count = 0;
int end = skipCount + maxItems;
if(end < 0)
{
// overflow
end = Integer.MAX_VALUE;
}
int count = Math.min(maxItems, schemes.size() - skipCount);
List<NodeRating> ratings = new ArrayList<NodeRating>(count);
List<NodeRating> ratings = new ArrayList<NodeRating>(totalSize);
for(int i = 0; i < end && it.hasNext(); i++)
{
@@ -124,13 +126,12 @@ public class NodeRatingsImpl implements NodeRatings
{
continue;
}
count++;
RatingScheme ratingScheme = validateRatingScheme(schemeName);
NodeRating nodeRating = ratingScheme.getNodeRating(nodeRef);
ratings.add(nodeRating);
}
int totalSize = schemes.size();
boolean hasMoreItems = (skipCount + count < totalSize);
return CollectionWithPagingInfo.asPaged(paging, ratings, hasMoreItems, totalSize);

View File

@@ -534,7 +534,29 @@ public class TestNodeRatings extends AbstractBaseApiTest
assertEquals(HttpStatus.SC_METHOD_NOT_ALLOWED, e.getHttpResponse().getStatusCode());
}
}
}
// Test case ACE-5453
{
try
{
testSkipCountLargeValue(person11, network1, nodeRef1, nodesProxy);
}
catch (PublicApiException e)
{
fail();
}
}
}
// test for retrieving the list of ratings with high value of skipCount(e.g. 10)
public void testSkipCountLargeValue(TestPerson person11, TestNetwork network1, NodeRef nodeRef1, Nodes nodesProxy) throws PublicApiException
{
List<NodeRating> expectedRatings = repoService.getNodeRatings(person11.getId(), network1.getId(), nodeRef1);
int skipCount = 10;
int maxItems = Integer.MAX_VALUE;
Paging paging = getPaging(skipCount, maxItems, expectedRatings.size(), expectedRatings.size());
nodesProxy.getNodeRatings(nodeRef1.getId(), createParams(paging, null));
}
@Override
public String getScope()