diff --git a/source/java/org/alfresco/rest/api/impl/SitesImpl.java b/source/java/org/alfresco/rest/api/impl/SitesImpl.java index fd680bb6d5..890a26fe66 100644 --- a/source/java/org/alfresco/rest/api/impl/SitesImpl.java +++ b/source/java/org/alfresco/rest/api/impl/SitesImpl.java @@ -415,44 +415,22 @@ public class SitesImpl implements Sites personId = people.validatePerson(personId); PagingRequest pagingRequest = Util.getPagingRequest(paging); - - final Collator collator = Collator.getInstance(); - final Set sortedSiteMembers = new TreeSet(new Comparator() - { - @Override - public int compare(SiteMembership o1, SiteMembership o2) - { - return collator.compare(o1.getSiteInfo().getTitle(), o2.getSiteInfo().getTitle()); - } - }); - - List siteMembers = siteService.listSiteMemberships (personId, -1); - int totalSize = siteMembers.size(); - sortedSiteMembers.addAll(siteMembers); - PageDetails pageDetails = PageDetails.getPageDetails(pagingRequest, totalSize); - List ret = new ArrayList(totalSize); - - Iterator it = sortedSiteMembers.iterator(); - for(int counter = 0; counter < pageDetails.getEnd() && it.hasNext(); counter++) - { - SiteMembership siteMember = it.next(); - if(counter < pageDetails.getSkipCount()) - { - continue; - } - - if(counter > pageDetails.getEnd() - 1) - { - break; - } + final List> sort = new ArrayList>(); + sort.add(new Pair(SiteService.SortFields.SiteTitle, Boolean.TRUE)); + sort.add(new Pair(SiteService.SortFields.Role, Boolean.TRUE)); - SiteInfo siteInfo = siteMember.getSiteInfo(); - MemberOfSite memberOfSite = new MemberOfSite(siteInfo.getShortName(), siteInfo.getNodeRef(), siteMember.getRole()); - ret.add(memberOfSite); - } - return CollectionWithPagingInfo.asPaged(paging, ret, pageDetails.hasMoreItems(), null); + PagingResults results = siteService.listSitesPaged(personId, sort, pagingRequest); + List siteMembers = results.getPage(); + List ret = new ArrayList(siteMembers.size()); + for(SiteMembership siteMember : siteMembers) + { + SiteInfo siteInfo = siteMember.getSiteInfo(); + MemberOfSite memberOfSite = new MemberOfSite(siteInfo.getShortName(), siteInfo.getNodeRef(), siteMember.getRole()); + ret.add(memberOfSite); + } + return CollectionWithPagingInfo.asPaged(paging, ret, results.hasMoreItems(), null); } public SiteContainer getSiteContainer(String siteId, String containerId)