From dba83496a9a970a7a5735c6e426a6ce575353926 Mon Sep 17 00:00:00 2001 From: Gavin Cornwell Date: Wed, 20 Jul 2011 09:41:51 +0000 Subject: [PATCH] Fix a couple of minor issues with sites search REST API (no results were being returned) git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@29213 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261 --- .../alfresco/repo/site/SiteServiceImpl.java | 4 +- .../repo/site/script/ScriptSiteService.java | 42 +++++++++++++++++-- .../repo/site/script/test_siteService.js | 19 +++++++++ 3 files changed, 59 insertions(+), 6 deletions(-) diff --git a/source/java/org/alfresco/repo/site/SiteServiceImpl.java b/source/java/org/alfresco/repo/site/SiteServiceImpl.java index c62bf08780..ab9911f4bf 100644 --- a/source/java/org/alfresco/repo/site/SiteServiceImpl.java +++ b/source/java/org/alfresco/repo/site/SiteServiceImpl.java @@ -810,7 +810,7 @@ public class SiteServiceImpl extends AbstractLifecycleBean implements SiteServic */ public List listSites(String nameFilter, String sitePresetFilter) { - return listSites(nameFilter, sitePresetFilter, 0); + return listSites(nameFilter, sitePresetFilter, -1); } /** @@ -828,7 +828,7 @@ public class SiteServiceImpl extends AbstractLifecycleBean implements SiteServic List> sortProps = null; - PagingRequest pagingRequest = new PagingRequest(size == 0 ? Integer.MAX_VALUE : size); + PagingRequest pagingRequest = new PagingRequest(size <= 0 ? Integer.MAX_VALUE : size); List filterProps = new ArrayList(); if (filterHasValue) diff --git a/source/java/org/alfresco/repo/site/script/ScriptSiteService.java b/source/java/org/alfresco/repo/site/script/ScriptSiteService.java index 32ad06c0e2..9ecbab7987 100644 --- a/source/java/org/alfresco/repo/site/script/ScriptSiteService.java +++ b/source/java/org/alfresco/repo/site/script/ScriptSiteService.java @@ -161,15 +161,15 @@ public class ScriptSiteService extends BaseScopableProcessorExtension * If no filters are specified then all the available sites are returned. * * @param filter inclusion filter for returned sites. Only sites whose cm:name OR cm:title - * OR cm:description CONTAIN the filter string will be returned. + * OR cm:description start with the filter string will be returned. * @param sitePresetFilter site preset filter * @return Site[] a list of the site filtered as appropriate * - * @see SiteService#findSites(String, String, int) for a description of the limitations of this method. + * @see SiteService#listSites(String, String, int) for a description of the limitations of this method. */ public Site[] listSites(String filter, String sitePresetFilter) { - return listSites(filter, sitePresetFilter, 0); + return listSites(filter, sitePresetFilter, -1); } /** @@ -179,6 +179,26 @@ public class ScriptSiteService extends BaseScopableProcessorExtension * If no filters are specified then all the available sites are returned. * * @param filter inclusion filter for returned sites. Only sites whose cm:name OR cm:title + * OR cm:description start with the filter string will be returned. + * @param sitePresetFilter site preset filter + * @param size max results size crop if >0 + * @return Site[] a list of the site filtered as appropriate + * + * @see SiteService#listSites(String, String, int) for a description of the limitations of this method. + */ + public Site[] listSites(String filter, String sitePresetFilter, int size) + { + List siteInfos = this.siteService.listSites(filter, sitePresetFilter, size); + return makeSitesArray(siteInfos); + } + + /** + * Find (search) the sites available in the repository. The returned list can optionally be filtered by name and site + * preset. + *

+ * If no filters are specified then all the available sites are returned. + * + * @param filter inclusion filter for returned sites. Only sites whose cm:name OR cm:title * OR cm:description CONTAIN the filter string will be returned. * @param sitePresetFilter site preset filter * @param size max results size crop if >0 @@ -186,15 +206,29 @@ public class ScriptSiteService extends BaseScopableProcessorExtension * @return Site[] a list of the site filtered as appropriate * * @see SiteService#findSites(String, String, int) for a description of the limitations of this method. + * @since 4.0 */ - public Site[] listSites(String filter, String sitePresetFilter, int size) + public Site[] findSites(String filter, String sitePresetFilter, int size) { List siteInfos = this.siteService.findSites(filter, sitePresetFilter, size); + return makeSitesArray(siteInfos); + } + + /** + * Converts the given List of SiteInfo objects to a JavaScript friendly array + * of Site objects. + * + * @param siteInfos + * @return Array of Site objects + */ + protected Site[] makeSitesArray(List siteInfos) + { List sites = new ArrayList(siteInfos.size()); for (SiteInfo siteInfo : siteInfos) { sites.add(new Site(siteInfo, this.serviceRegistry, this.siteService, getScope())); } + return sites.toArray(new Site[sites.size()]); } diff --git a/source/java/org/alfresco/repo/site/script/test_siteService.js b/source/java/org/alfresco/repo/site/script/test_siteService.js index 0058c15405..e455c2bd82 100644 --- a/source/java/org/alfresco/repo/site/script/test_siteService.js +++ b/source/java/org/alfresco/repo/site/script/test_siteService.js @@ -57,6 +57,24 @@ function testListSites() // TODO .. check the filters } +function testFindSites() +{ + // Find all the sites + var sites = siteService.findSites(null, null, -1); + test.assertEquals(preexistingSiteCount + 2, sites.length); + + // find all sites with "short" in the name + sites = siteService.findSites("short", null, -1); + test.assertEquals(2, sites.length); + + sites = siteService.findSites("short", null, 0); + test.assertEquals(2, sites.length); + + // find just one site with "short" in the name + sites = siteService.findSites("short", null, 1); + test.assertEquals(1, sites.length); +} + function testMembership() { var site = siteService.getSite("siteShortName"); @@ -207,6 +225,7 @@ function testSiteCustomProperties() // Execute test's testCRUD(); testListSites(); +testFindSites(); testMembership(); testContainer(); testPermissions();