mirror of
https://github.com/Alfresco/alfresco-community-repo.git
synced 2025-08-14 17:58:59 +00:00
Merged RETURN-OF-THE-API (5.2.0) to 5.2.N (5.2.1)
129058 jvonka: V1 REST API: Sites Live Search (/queries/live-search-sites) - additional tweaks based on ADs review comments REPO-232, REPO-883 git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/BRANCHES/DEV/5.2.N/root@129198 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
@@ -269,6 +269,15 @@ public class QueriesImpl implements Queries, InitializingBean
|
||||
{
|
||||
return nodes.getFolderOrDocument(nodeRef, null, null, includeParam, mapUserInfo);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected String escapeTerm(String term)
|
||||
{
|
||||
term = term.trim();
|
||||
term = SearchLanguageConversion.escapeLuceneQuery(term);
|
||||
return term;
|
||||
}
|
||||
|
||||
}.find(parameters, PARAM_TERM, MIN_TERM_LENGTH_NODES, "keywords",
|
||||
IN_QUERY_SORT, NODE_SORT_PARAMS_TO_QNAMES,
|
||||
new SortColumn(PARAM_MODIFIEDAT, false));
|
||||
@@ -347,14 +356,6 @@ public class QueriesImpl implements Queries, InitializingBean
|
||||
query.append("*\")");
|
||||
}
|
||||
|
||||
@Override
|
||||
protected String getTerm(Parameters parameters, String termName, int minTermLength)
|
||||
{
|
||||
String filter = super.getTerm(parameters, termName, minTermLength);
|
||||
String escNameFilter = SearchLanguageConversion.escapeLuceneQuery(filter.replace('"', ' '));
|
||||
return escNameFilter;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected List<Site> newList(int capacity)
|
||||
{
|
||||
@@ -498,8 +499,8 @@ public class QueriesImpl implements Queries, InitializingBean
|
||||
throw new InvalidArgumentException("Query '"+termName+"' not specified");
|
||||
}
|
||||
|
||||
term = term.trim();
|
||||
term = term.replace("\"", "");
|
||||
term = escapeTerm(term);
|
||||
|
||||
int cnt = 0;
|
||||
for (int i = 0; i < term.length(); i++)
|
||||
{
|
||||
@@ -522,6 +523,20 @@ public class QueriesImpl implements Queries, InitializingBean
|
||||
return term;
|
||||
}
|
||||
|
||||
/**
|
||||
* Trim and escape the term - override if needed
|
||||
*
|
||||
* @param term
|
||||
* @return
|
||||
*/
|
||||
protected String escapeTerm(String term)
|
||||
{
|
||||
term = term.trim();
|
||||
term = term.replace("\"", "");
|
||||
term = SearchLanguageConversion.escapeLuceneQuery(term);
|
||||
return term;
|
||||
}
|
||||
|
||||
/**
|
||||
* Adds sort order to the SearchParameters.
|
||||
*/
|
||||
|
@@ -77,12 +77,10 @@ public class QueriesSitesApiTest extends AbstractSingleNetworkSiteTest
|
||||
|
||||
Paging paging = getPaging(0, 100);
|
||||
|
||||
String term = "abcd";
|
||||
|
||||
// Try to get sites with search term 'ab' - assume clean repo (ie. none to start with)
|
||||
String term = "ab";
|
||||
Map<String, String> params = new HashMap<>(1);
|
||||
params.put(Queries.PARAM_TERM, term);
|
||||
|
||||
// Try to get sites with search term 'abc123' - assume clean repo (ie. none to start with)
|
||||
HttpResponse response = getAll(URL_QUERIES_LSS, paging, params, 200);
|
||||
List<Site> sites = RestApiUtil.parseRestApiEntries(response.getJsonResponse(), Site.class);
|
||||
assertEquals(0, sites.size());
|
||||
@@ -101,7 +99,7 @@ public class QueriesSitesApiTest extends AbstractSingleNetworkSiteTest
|
||||
charValue = charValue+1;
|
||||
siteI = siteI + String.valueOf((char)charValue);
|
||||
|
||||
String siteId = siteI + num;
|
||||
String siteId = siteI + num + RUNID;
|
||||
String siteTitle = siteT + num + siteT;
|
||||
String siteDescrip = siteD + num + siteD;
|
||||
|
||||
@@ -110,6 +108,8 @@ public class QueriesSitesApiTest extends AbstractSingleNetworkSiteTest
|
||||
siteIds.add(createdSiteId);
|
||||
}
|
||||
|
||||
// basic search tests
|
||||
{
|
||||
// Search hits based on site id
|
||||
term = "ab";
|
||||
params = new HashMap<>(1);
|
||||
@@ -146,7 +146,7 @@ public class QueriesSitesApiTest extends AbstractSingleNetworkSiteTest
|
||||
response = getAll(URL_QUERIES_LSS, paging, params, 200);
|
||||
sites = RestApiUtil.parseRestApiEntries(response.getJsonResponse(), Site.class);
|
||||
assertEquals(1, sites.size());
|
||||
assertEquals(term, sites.get(0).getId());
|
||||
assertEquals(term+RUNID, sites.get(0).getId());
|
||||
|
||||
// Search hits based on site title
|
||||
term = siteT;
|
||||
@@ -181,7 +181,10 @@ public class QueriesSitesApiTest extends AbstractSingleNetworkSiteTest
|
||||
sites = RestApiUtil.parseRestApiEntries(response.getJsonResponse(), Site.class);
|
||||
assertEquals(1, sites.size());
|
||||
assertEquals(term, sites.get(0).getDescription());
|
||||
}
|
||||
|
||||
// -ve tests
|
||||
{
|
||||
// -ve test - no params (ie. no term)
|
||||
getAll(URL_QUERIES_LSS, paging, null, 400);
|
||||
|
||||
@@ -199,6 +202,7 @@ public class QueriesSitesApiTest extends AbstractSingleNetworkSiteTest
|
||||
setRequestContext(null);
|
||||
getAll(URL_QUERIES_LSS, paging, params, 401);
|
||||
}
|
||||
}
|
||||
finally
|
||||
{
|
||||
// some cleanup
|
||||
@@ -225,18 +229,18 @@ public class QueriesSitesApiTest extends AbstractSingleNetworkSiteTest
|
||||
Paging paging = getPaging(0, 100);
|
||||
|
||||
// create site
|
||||
String s1 = createSite("siABCDEF", "ABCDEF DEF", "sdABCDEF", SiteVisibility.PRIVATE, 201).getId();
|
||||
String s2 = createSite("siABCD", "ABCD DEF", "sdABCD", SiteVisibility.PRIVATE, 201).getId();
|
||||
String s3 = createSite("siABCDE", "ABCDE DEF", "sdABCDE", SiteVisibility.PRIVATE, 201).getId();
|
||||
String s4 = createSite("siAB", "AB DEF", "sdAB", SiteVisibility.PRIVATE, 201).getId();
|
||||
String s5 = createSite("siABC", "ABC DEF", "sdABC", SiteVisibility.PRIVATE, 201).getId();
|
||||
String s1 = createSite("siABCDEF"+RUNID, "ABCDEF DEF", "sdABCDEF", SiteVisibility.PRIVATE, 201).getId();
|
||||
String s2 = createSite("siABCD"+RUNID, "ABCD DEF", "sdABCD", SiteVisibility.PRIVATE, 201).getId();
|
||||
String s3 = createSite("siABCDE"+RUNID, "ABCDE DEF", "sdABCDE", SiteVisibility.PRIVATE, 201).getId();
|
||||
String s4 = createSite("siAB"+RUNID, "AB DEF", "sdAB", SiteVisibility.PRIVATE, 201).getId();
|
||||
String s5 = createSite("siABC"+RUNID, "ABC DEF", "sdABC", SiteVisibility.PRIVATE, 201).getId();
|
||||
|
||||
siteIds.addAll(Arrays.asList(new String[] {s1, s2, s3, s4, s5}));
|
||||
|
||||
int sCount = siteIds.size();
|
||||
|
||||
// test sort order
|
||||
|
||||
{
|
||||
// default sort order - title asc (note: in-query - using search index, tokenized cm:title)
|
||||
Map<String, String> params = new HashMap<>(1);
|
||||
params.put(Queries.PARAM_TERM, "siAB");
|
||||
@@ -324,17 +328,18 @@ public class QueriesSitesApiTest extends AbstractSingleNetworkSiteTest
|
||||
sites = RestApiUtil.parseRestApiEntries(response.getJsonResponse(), Site.class);
|
||||
assertEquals(sCount, sites.size());
|
||||
assertEquals(Arrays.asList(new String[]{s1, s3, s2, s5, s4}), getSiteIds(sites));
|
||||
}
|
||||
|
||||
// basic paging test
|
||||
|
||||
// basic paging tests
|
||||
{
|
||||
// sort order - title desc (in query - using search index, tokenized cm:title)
|
||||
|
||||
params = new HashMap<>(1);
|
||||
Map<String, String> params = new HashMap<>(1);
|
||||
params.put(Queries.PARAM_TERM, "siAB");
|
||||
params.put(Queries.PARAM_ORDERBY, "title desc");
|
||||
params.put("sortType", "in-query");
|
||||
response = getAll(URL_QUERIES_LSS, getPaging(0, 2), params, 200);
|
||||
sites = RestApiUtil.parseRestApiEntries(response.getJsonResponse(), Site.class);
|
||||
HttpResponse response = getAll(URL_QUERIES_LSS, getPaging(0, 2), params, 200);
|
||||
List<Site> sites = RestApiUtil.parseRestApiEntries(response.getJsonResponse(), Site.class);
|
||||
assertEquals(2, sites.size());
|
||||
assertEquals(Arrays.asList(new String[]{s4, s1}), getSiteIds(sites));
|
||||
|
||||
@@ -384,11 +389,12 @@ public class QueriesSitesApiTest extends AbstractSingleNetworkSiteTest
|
||||
sites = RestApiUtil.parseRestApiEntries(response.getJsonResponse(), Site.class);
|
||||
assertEquals(1, sites.size());
|
||||
assertEquals(Arrays.asList(new String[]{s4}), getSiteIds(sites));
|
||||
}
|
||||
|
||||
|
||||
|
||||
// -ve tests
|
||||
{
|
||||
// -ve test - invalid sort field
|
||||
params = new HashMap<>(2);
|
||||
Map<String, String> params = new HashMap<>(2);
|
||||
params.put(Queries.PARAM_TERM, "siAB");
|
||||
params.put(Queries.PARAM_ORDERBY, "invalid asc");
|
||||
getAll(URL_QUERIES_LSS, paging, params, 400);
|
||||
@@ -397,6 +403,7 @@ public class QueriesSitesApiTest extends AbstractSingleNetworkSiteTest
|
||||
setRequestContext(null);
|
||||
getAll(URL_QUERIES_LSS, paging, params, 401);
|
||||
}
|
||||
}
|
||||
finally
|
||||
{
|
||||
// some cleanup
|
||||
|
Reference in New Issue
Block a user