ALF-9151.

Added findSites() method which uses Lucene queries to retrieve sites.
     This method supports a CONTAINS query on cm:name, title, description.
  All listSites() methods are now immediately consistent - as opposed to eventually.
     However in moving these method implementations to CannedQueries, they now only
     support STARTS_WITH_IGNORE_CASE queries on cm:name, title, description.
     I've highlighted this in the javadoc.
  ScriptSiteService now uses the eventually consistent findSites() method for searches.
  Also some fallout in the tests.



git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@28943 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
Neil McErlean
2011-07-12 11:42:16 +00:00
parent 3f7a1edde6
commit 8e3b855dea
5 changed files with 201 additions and 120 deletions

View File

@@ -76,8 +76,8 @@ public class SiteServiceImplTest extends BaseAlfrescoSpringTest
{
private static final String TEST_SITE_PRESET = "testSitePreset";
private static final String TEST_SITE_PRESET_2 = "testSitePreset2";
private static final String TEST_TITLE = "This is my title";
private static final String TEST_DESCRIPTION = "This is my description";
private static final String TEST_TITLE = "TitleTest This is my title";
private static final String TEST_DESCRIPTION = "DescriptionTest This is my description";
private static final String USER_ONE = "UserOne_SiteServiceImplTest";
private static final String USER_TWO = "UserTwo_SiteServiceImplTest";
@@ -398,10 +398,18 @@ public class SiteServiceImplTest extends BaseAlfrescoSpringTest
}
/**
* Test listSite methods.
* Test listSite and findSites methods.
* <p/>
* Note that {@link SiteService#findSites(String, int)} offers eventually consistent results and therefore may
* exhibit changed behaviour if Lucene is switched off or is replaced by SOLR.
* {@link SiteService#listSites(List, List, org.alfresco.query.PagingRequest)} and the other listSites methods
* should offer consistent, accurate result sets.
*/
public void testListSites() throws Exception
{
// We'll match against the first few letter of TEST_TITLE in various listSites() tests below.
final String testTitlePrefix = TEST_TITLE.substring(0, 9);
List<SiteInfo> sites = this.siteService.listSites(null, null);
assertNotNull("sites list was null.", sites);
final int preexistingSitesCount = sites.size();
@@ -417,23 +425,33 @@ public class SiteServiceImplTest extends BaseAlfrescoSpringTest
sites = this.siteService.listSites(null, null);
assertNotNull(sites);
assertEquals(preexistingSitesCount + 5, sites.size());
List<SiteInfo> sitesFromFind = this.siteService.findSites(null, null, 100);
assertEquals(preexistingSitesCount + 5, sitesFromFind.size());
// Get sites by matching name
sites = this.siteService.listSites("One", null);
// Get sites by matching name - as of 4.0 listSites only supports STARTS WITH matches
sites = this.siteService.listSites("mySiteO", null);
assertNotNull(sites);
assertEquals("Matched wrong number of sites named 'One'", 1, sites.size());
assertEquals("Matched wrong number of sites named 'mySiteO*'", 1, sites.size());
// However 'findSites' allows CONTAINS matching.
sitesFromFind = this.siteService.findSites("One", null, 100);
assertEquals("Matched wrong number of sites named 'One'", 1, sitesFromFind.size());
// Get sites by matching title
sites = this.siteService.listSites("title", null);
sites = this.siteService.listSites(testTitlePrefix, null);
assertNotNull(sites);
assertEquals("Matched wrong number of sites named 'title'", 5, sites.size());
assertEquals("Matched wrong number of sites starting with '" + testTitlePrefix + "'", 5, sites.size());
sitesFromFind = this.siteService.findSites("title", null, 100);
assertEquals("Matched wrong number of sites containing 'title'", 5, sitesFromFind.size());
// Get sites by matching description
sites = this.siteService.listSites("description", null);
assertNotNull(sites);
assertEquals("Matched wrong number of sites named 'description'", 5, sites.size());
sitesFromFind = this.siteService.findSites("description", null, 100);
assertEquals("Matched wrong number of sites named 'description'", 5, sitesFromFind.size());
// Get sites by matching sitePreset - see ALF-5620
// SiteService.findSites does not support finding by sitePreset and so is not tested here.
sites = this.siteService.listSites(null, TEST_SITE_PRESET);
assertNotNull(sites);
assertEquals("Matched wrong number of sites with PRESET", 2, sites.size());
@@ -496,16 +514,17 @@ public class SiteServiceImplTest extends BaseAlfrescoSpringTest
/**
* Test list sites with a name filter
*/
sites = this.siteService.listSites("One", null, 10);
sites = this.siteService.listSites("mySiteOne", null, 10);
assertNotNull(sites);
assertEquals(1, sites.size());
sitesFromFind = this.siteService.findSites("One", null, 100);
assertEquals(1, sitesFromFind.size());
/**
* Search for partial match on more titles - matches word "Site"
* Search for partial match on more titles - matches word "Site".
*/
sites = this.siteService.listSites("ite", null, 10);
assertNotNull(sites);
assertEquals(5, sites.size());
sitesFromFind = this.siteService.findSites("ite", null, 100);
assertEquals(5, sitesFromFind.size());
/**
* Now Switch to User Two and do the same sort of searching.
@@ -516,9 +535,8 @@ public class SiteServiceImplTest extends BaseAlfrescoSpringTest
/**
* As User Two Search for partial match on more titles - matches word "Site" - should not find private sites
*/
sites = this.siteService.listSites("ite", null, 10);
assertNotNull(sites);
assertEquals(4, sites.size());
sitesFromFind = this.siteService.findSites("ite", null, 100);
assertEquals(4, sitesFromFind.size());
for (SiteInfo site : sites)
{
String shortName = site.getShortName();
@@ -555,9 +573,8 @@ public class SiteServiceImplTest extends BaseAlfrescoSpringTest
/**
* As User Three Search for partial match on more titles - matches word "Site" - should not find private and moderated sites
*/
sites = this.siteService.listSites("ite", null, 10);
assertNotNull(sites);
assertEquals(3, sites.size());
sitesFromFind = this.siteService.findSites("ite", null, 100);
assertEquals(3, sitesFromFind.size());
for (SiteInfo site : sites)
{
String shortName = site.getShortName();
@@ -579,7 +596,7 @@ public class SiteServiceImplTest extends BaseAlfrescoSpringTest
}
else if (shortName.equals("mySiteFive") == true)
{
checkSiteInfo(site, TEST_SITE_PRESET_2, "mySiteFive", TEST_TITLE, TEST_DESCRIPTION, SiteVisibility.MODERATED);
checkSiteInfo(site, TEST_SITE_PRESET_2, "mySiteFive", TEST_TITLE, TEST_DESCRIPTION, SiteVisibility.MODERATED);
}
else
{